Nube de Etiquetas
(Ah?)

lunes, febrero 07, 2011

¡Aprobadas tesis de maestría en I.O. aplicada a Machine Learning!

Orgullosamente felicito a mis dos amigas y tesistas de la maestría en Ingeniería de Sistemas de la USB (opción Investigación de Operaciones), Adriana Torres y Ana Serra, quienes este viernes en la mañana tuvieron sus respectivas defensas, con un jurado integrado por mi persona, como tutor, por el prof. Marcos Raydan, como miembro principal del jurado. Los presidentes del jurado evaluador fueron, respectivamente, Ana María Borges y Hugo Montesinos.

Los nombres de los trabajos de grado son:
  • "Clasificación multicategoría de patrones mediante optimización de multisuperficies" - Adriana Torres
  •  "Algoritmo de Boosting en Métodos Multi-superficies para clasificación binaria" - Ana Serra
Ambas defensas tuvieron lugar en la sala de reuniones del Centro de Estadística y Software Matemático.

Felicidades por un trabajo bien hecho! Es un placer contar con tesistas de ese calibre.

martes, diciembre 07, 2010

Búsqueda Directa no monótona para optimización con restricciones lineales

Tengo el agrado de invitarlos a la defensa de la Tesis Doctoral denominada

     "MÉTODO DE BÚSQUEDA DIRECTA NO MONÓTONA
             PARA OPTIMIZAR UNA FUNCIÓN OBJETIVO
                SUJETA A RESTRICCIONES LINEALES"

presentada por el estudiante ILDEMARO JOSÉ GARCÍA URREA
como requisito parcial para optar al título de DOCTOR EN INGENIERÍA.

Fecha: viernes 10 de diciembre del 2010
Hora: 2:00 pm
Sitio: sala 133 del edificio Ciclo Básico 1.

Trabajo realizado bajo la tutoría del Prof. Ubaldo García Palomares

Jurado examinador:
     Prof. Bernardo Feijoo (USB),
     Prof. Marcos Raydán(UCV),
     Prof. Ubaldo García Palomares(USB),
     Prof. Ebert Brea (suplente UCV),
     Prof. Débora Cores (suplente USB)

lunes, junio 01, 2009

Charla: Clasificadores multi-superficie con minimización asimétrica de errores


En el contexto del Primer Ciclo de Charlas de los Postgrados en Estadística a realizarse los días jueves de las semanas impares de este trimestre, este jueves 4 de junio de 2009 dictaré esta charla, a las 11:30 am en el edificio MyS oficina 108. Específicamente, se realizará en la sala de seminarios del CESMa-USB.

Las charlas están pensadas para que estudiantes o egresados de nuestros programas compartan resultados o avances de sus trabajos de grado, estimulando el intercambio de ideas entre los participantes.

El tema de mi ponencia, en esta ocasión, versará sobre el uso de heurísticas de optimización, para la generación de un clasificador de patrones (reconocedor de patrones) multi-superficie. Se hablará sobre las Redes Neurales Artificiales de Clasificación Binaria (perceptrones de una capa oculta), Máquinas de Vectores de Soporte (SVMs), y sobre enfoques innovadores en el tratamiento asimétrico de errores de clasificación.

sábado, abril 25, 2009

Ya lista (hace tiempo) mi página académica!

Mi página académica está lista desde hace algunos meses, pero ocupado en las menudencias de la vida académica REAL, no me había ocupado de anunciarla en mi vida VIRTUAL.

Está montada, para practicidad (mía) en la plataforma de google Sites, y pueden visitarla haciendo clic aquí , o yendo al URL:
http://sites.google.com/site/omanzanillausb/

En ella he colocado todo lo referente a mi actividad académica, a saber:

  • Mis actividades docentes (materias de Investigación de Operacioens, Gestión de la Producción, y Toma de Decisiones).
  • Mis actividades investigativas
  • Mis actividades de extensión (recientemente me incorporé al equipo de trabajo de la Unidad de Gestión Ambiental de la Universidad Simón Bolívar y estamos haciendo un proyecto en una playa venezolana pra la gestión autogestionada de desechos).
Bueno, están invitados a visitarla, y cualquier comentario puede ser dejado acá en este post, como siempre.

Pronto haré mi site personal en Google Sites, debido a que mi site en Googlepages está peligrando. No se si lo sabían, pero Googlepages está por ser descontinuado, y no quisiera que el "robot" destroce mi información al hacer la migración automática a Google Sites.

miércoles, marzo 18, 2009

Optimización por "enjambres"

Todos hemos escuchado de los algoritmos genéticos.

Básicamente, se usan para ver, dentro de un espacio matemático, qué punto es el "mejor". Para saber cuando un punto es mejor que otro, simplemente se evalúa cierta función en ese punto, y se ve cuanto vale. Por lo general, se busca que sea lo mayor posible, o lo menor posible (problemas de maximización y minimización, respectivamente). Esa función la podemos llamar "Aptitud", o como se le nombra clásicamente en Investigación de Operaciones: Función Objetivo (puede ser minimizar costos, riesgos, distancias, o maximizar ganancias, flexibilidad, robustez, etc).

(NOTA: si tienen flojera de leer, pasen al final del post, que hay un video EXCELENTE!)

Subiendo (o bajando) montañas...

Esa solución es un vector "x". Usualmente en optimización, uno se busca un "x-inicial", y evalúa la "aptitud"de los puntos que están en los alrededores de ese lugar, y se sigue alguna estrategia para suponer hacia dónde hay que moverse para encontrar un mejor valor de la función. Una vez se determina hacia dónde se busca una mejor solución, se "avanza" un poco (una distancia a escoger juiciosamente), y tenemos una nueva "x". El proceso se repite, hasta que  uno ve que en los alrededores no hay nada mejor, y supone que llegó al "mejor" lugar (el que tiene menor valor o mayor valor en la función objetivo). Puede ocurrir que se llegó a un óptimo local (había otro máximo mejor, pero éste se encontró más rápido).

La competencia para "sobrevivir"...

En Algoritmos Genéticos, no se hace esto. Los pasos son más o menos los siguientes:

  1. Generar a los competidores. Aleatoriamente creamos una cantidad grande de posibles soluciones, es decir, no una "x", sino (pongamos un número) 100 diferentes soluciones, x1, x2,..., x100. Estos serán nuestra "población".
  2. Selección "natural". Ahora toca jugar a la madre naturaleza, y determinar cuáles son los mejores de ellos, es decir los más aptos. Pongamos un número: seleccionamos a los 20 mejores (se evalúa la función objetivo en cada uno y tomamos los que tienen los 20 valores más pequeños o más altos de esa función). A los que no entren en este grupo, los "matamos" (eliminamos esas variables).
  3. Sexo libre, 100% de fertilidad, y la aparición de mutantes.  Cada uno de estos 20 ganadores, es apareado con los otros 19 (aunque pueden seguirse estrategias menos promíscuas ;D ), con un 100% de posibilidad de embarazo. Es decir, siempre se genera uno o más hijos en cada apareamiento. Puede haber apareamiento entre más de dos de los competidores, cosa que en la biología no ocurre! (aquí si tendría sentido la serie de televisión "Mis dos papás"). Cada hijo es una "x" nueva, cuyas características genéticas (valores de cada posición del vector "x"), son una mezcla de las de sus padres. Adicionalmente, aleatoriamente algunos de los hijos producidos en esta etapa tienen alguna característica genética cambiada aleatoriamente, lo que corresponde a una mutación. La población crece hasta tener 100 indivíduos nuevamente, donde están los 20 padres, y los demás son los hijos.
  4. Ahora se repite el proceso, porque se vuelve a ver cuáles son los 20 más aptos, y el resto se muere, y se produce nuevamente un apareamiento... Esto se repite hasta que las diferencias de aptitud entre los miembros de la población son muy pequeñas, y están todos muy cerca (tienen genes casi iguales). En ese momento se supone que el promedio de los genes de la población es la solución al problema (el mejor valor de "x" en el espacio matemático, según esa función objetivo fijada).
Importante es notar que en este método, hay dos componentes del comportamiento del algoritmo: la exploración (generando aleatoriamente "x" por todo el espacio, y aleatoriamente generando indivíduos mutantes, de forma ciega), y la explotación (siempre matando a los peores, y dejando a los mejores, hace que se aglomeren cada vez más arriba en las "montañas" de la función objetivo). Esto hace que sea menos probable que la solucion encontrada sea un óptimo local, y en eso puede resultar mejor que la optimización clásica.


Vuelen, hijos míos, exploren, ayúdense y destruyan al enemigo!

Ahora entonces tenemos a las técnicas de Optimización por "enjambres". Estas no son una población en la que se mueren los menos aptos. Por el contrario, siguen vivos, y el que no mueran agrega ese componente de "exploración" del que hablamos en los algoritmos genéticos, pero el que compartan información, hace que busquen las partes altas del espacio matemático, lo que equivale a un comportamiento de explotación. Dicen que nadie aprende de la experiencia ajena, lo cuál es verdad en el genético, pero acá se rompe esa regla!

  1. Enjambre en caos. Cada "x" nace, inicialmente, en una posición aleatoria, con una velocidad aleatoria, volando hacia una dirección aleatoria. Es decir, la locura y el caos total!
  2. Corran la voz!... la versión matemática de un chisme. Cada indivíduo (que es una posible solución "x" al problema), se entera de en qué posición está el que, dentro de toda la población, ha conseguido un mejor espacio para explorar (el que tenga mejor valor para la función objetivo). También se entera, de entre los que estén más cerca de él, cuál es el que mejor posicionado está.
  3. La información es de quién la usa!. Cada uno de los indivíduos de la población ahora decide cómo usa la información que tiene, y la pondera respecto a lo que él ya venía haciendo (por algo venía en esta dirección, no?). Aleatoriamente le da más o menos importancia al chisme de dónde está el mejor de toda la población, dondé está el mejor de sus vecinos, y hacia dónde iba cuando se enteró de estos dos chismes. Según la información, elige una nueva dirección, y camina por ahí, llegando a una nueva posición. Allí vuelven a llegarle los chismes actualizados, y se repite el proceso.
  4. Cuando todos más o menos están en el mismo sitio, el promedio de los lugares en los que están se asume como la respuesta al problema.
Interesante, no?

Ahora vean un video de unos robots que tienen la tarea de arrimar un objeto hacia su base. Ninguno de ellos logra ver más allá de unos centímetros de su naríz, pero se comunican perfectamente entre ellos, y trabajan bajo la optimización de enjambres. Poco a poco ubican el objeto, y logran llevarlo hacia su objetivo. Realmente alucinante!!
(gracias Gregorio por comentarme sobre este tema y pasarme el video!)







miércoles, mayo 21, 2008

Psicología aplicada en Máquinas de Aprendizaje: los seres humanos no son números

Creo que ya que les hablé del Premio Netflix, es bueno que les comente este excelente post en el que hacen reseña de un hecho curioso: una persona que originalmente viene del área de Psicología, llamada Gavin Potter, logró un marcado avance en este concurso. Hasta el momento en que esa persona entró, ninguno de los grupos concursantes no habían logrado hacer avances significativos desde hacía algún tiempo.... ¡y estoy hablando de personas que han probado ya múltiples ideas para resolver el problema!

Esta persona oriunda del área de Psicología, ya desde su primer intento, logró un avance mucho mayor que todos los avances recientes de los demás equipos. No pienso hacer una paráfrasis del post acá, pero si resumir en pocas palabras lo importante, y que debemos tener en cuenta al enfrentarnos a problemas reales:


Los especialistas en cómputo, estadística e inteligencia artificial pueden desarrollar algoritmos muy elaborados, y entonarlos para que trabajen muy bien ante los datos disponibles para el problema de Netflix. En ellos los números representan a los cinéfilos, y a sus gustos, y las fórmulas tratan de "predecir" el gusto que tendrán por la próxima película.

Esto está bien... salvo por el hecho de que....

¡Las personas no son números... ...ni miran las películas como si éstas lo fuesen!

Potter consideró a las personas como personas, e interpretó las calificaciones de las personas, tomando en cuenta cosas ya conocidas del comportamiento humano al momento de asignar calificaciones. El hecho de que esos números fueran asignados por un ser humano, es una información que, de alguna forma, había que incluír en el modelo.

Tomar en cuenta el factor humano, es algo que se díce más fácil de lo que se hace. ¿Cómo valernos de la psicología para estudiar personas sobre las cuáles no sabemos nada, excepto cuánto "dicen" que les gustó una película.

En corto, la forma en que Potter lo hizo, fue la siguiente:
  • Consideró que los gustos de las personas pueden cambiar a medida que pasa el tiempo. Uno puede darle más "peso" a las calificaciones más recientes que a las muy viejas.
  • Consideró el efecto "anclaje", que se refiere a la inercia que nos invade cuando asignamos calificaciones numéricas a algo (me ha pasado en mi experiencia como profesor universitario!). Si una persona ve tres películas seguidas que merecen 4 estrellas, y luego ve una que es un poco mejor, muy probablemente le asignará un 5. Sin embargo, si empezó viendo un par de películas a las que les dió sólo una estrella, esa misma película, que en otra circunstancia hubiese calificado con un 5, recibiría posiblemente sólo un 4 o incluso un 3. Potter se ocupó de medir este efecto en la data proporcionada por Netflix, y tomó en cuenta este efecto en las fórmulas, para determinar más precisamente los gustos de los cinéfilos.
La moraleja detrás de esto es muy importante:

sin importar que tan buenos modeladores seamos, al enfrentar un problema real, tener en el equipo una persona que sepa de la parte de la realidad que está tratando de modelarse. Es posible que a un especialista en computación, optimización o estadística se le ocurra algo de este estilo, pero, como sugiere el post en cuestión: incluír al especialista de la parte de la realidad que estamos estudiando puede ahorrar trabajo en modelos infructuosos.

Para cerrar, les paso el link al post es éste:
http://www.wired.com/techbiz/media/magazine/16-03/mf_netflix?currentPage=all

jueves, mayo 01, 2008

Usando la IMDb para ganar el Premio Netflix

Hay ahora varias cosas que tengo pendiente publicar acá, con la esperanza de seguir generando oportunidades para que personas que no tienen formación inicial en las áreas afines a la Investigación de Operaciones y a las Máquinas de Aprendizaje puedan iniciarse en estas lides.

Mientras consigo el tiempo para escribir con la calma suficiente sobre un nuevo tema, quiero compartir con ustedes un post del blog "Geeking with Greg", en el cuál Greg comparte con nosotros las inquietudes que se han ido despertando entre los concursantes del Premio Netflix.

En resúmen, las inquietudes rondan alrededor de las dudas que hay sobre si realmente es necesario tener mayor cantidad de información sobre las películas (trayéndola de la IMdb, por ejemplo), o simplmente es necesario tener mejores algoritmos ( o ambas cosas, evidentemente ).

El post pueden verlo en esta dirección:
http://glinden.blogspot.com/2008/03/using-imdb-data-for-netflix-prize.html

Saludos!

PD: para los que no saben de qué trata el premio Netflix, éste se trata de un concurso propuesto por la empresa de ese mismo nombre, en el que invitan a cualquiera que quiera participar (la inscripción es gratuita) a usar una base de datos en la se tiene información sobre las preferencias fílmicas de los usuarios, para elaborar un algoritmo que prediga, para cada usuario, qué puntuación le pondría a una película que aún no ha visto. En la base de datos las calificaciones que tiene cada usuario del sistema, sobre cada película que ha visto son del 1 al 5. El objetivo es superar al algoritmo que ya tienen, al menos en un 10% en la efectividad.

lunes, marzo 31, 2008

Suscripción por email y Nube de Etiquetas

En ocasiones ocurre que paso mucho tiempo sin publicar,... tanto, que algunos de ustedes dejarán de visitar, por haber perdido la esperanza de que publique nuevamente.

Otras veces puede que llegue a publicar 2 o 3 cosas seguidas, con lo que los últimos posts de alguna forma "entierran" a los previos, y quizá les haga difícil notar que en algún momento estuvieron allí.

Debido a esto, y dado que hay algunas personas interesadas en el tema, que podrían querer no perderse ninguno de los posts, y no necesariamente son usuarios de lectores de RSS, decidí activar un servicio de suscripción por email, que les permitirá leer las primeras líneas de cada post que yo publique, y con ello quizá puedan saber si es de su interés o no, y así decidir si visitan el blog.

También, atendiendo a un par de sugerencias, coloqué una nube con las etiquetas (tags) que uso en el blog. Si ven que alguna de ellas está en un tamaño de letra mayor, significa que hay más posts sobre ese tema. Al hacer clic sobre un tema o etiqueta, cargarán en su navegador todos los posts que tienen esa etiqueta asignada, permitiéndoles de esa forma filtrar la información, y leer sólo aquellos posts que son del tema de su interés en ese momento.

Saludos!

Orestes

domingo, marzo 30, 2008

Overfitting o Sobre-ajuste

Agenda:

  • Este post empieza con una sacada de navaja.
  • Luego explicaré por qué este post es una respuesta a uno de mis lectores, y recomendaré no usar este blog para citas en trabajos académicos.
  • Por último explicaré, de la forma más amena de la que sea capaz esta vez, qué es el Overfitting o Sobre-ajuste, o el Sobre-entrenamiento.
Permítanme empezar sacando la susodicha navaja:

Plurality should not be assumed without necessity
- William de Ockham, siglo XIV

O dicho de otra forma: KISS (keep it simple, stupid!). Pero antes de explicar qué tiene que ver esto (la Navaja de Ockham) con el overfitting, permítanme escribir algo sobre el contexto de este post.

Recibí en estos días un correo de Marc (no coloco el nombre completo porque lo correcto es proteger la privacidad), en donde me decía lo siguiente:

He visto tu articulo sobre las svm , pero la verdad es que me falta una
cosa de él, el problema de el sobre-aprendizaje, me puedes comentar algo sobre
el tema? lo necesito para un trabajo

Yo ya tenía en mis planes escribir sobre el overfitting, debido a que es un tema obligado al hablar de aprendizaje. Sin embargo, antes de empezar a hablar sobre ello, quiero dejar algo en claro:

no recomiendo citar lo que se escribe en este blog, en trabajos académicos.

¿Por qué? la razón es muy sencilla. Esto no es una fuente arbitrada. Y adicionalmente, la informalidad con la que están explicadas las cosas no lo hace una buena fuente para elaborar trabajos académicos. Sin embargo es una buena fuente (o al menos pretendo que lo sea lo más posible!) para adquirir entendimiento.

Si alguno de ustedes necesita referencias que puedan ser citadas sobre algún aspecto de los conversados acá, déjenme el comentario y gustoso compartiré las fuentes que yo conozca al respecto. ¿Vale?

En fin, ahora si,...


hablemos sobre overfitting: ejemplo "humano"

Hablar de overfitting es hablar de situaciones como la siguiente:

Estamos en un salón de clases, recibiendo datos de un profesor que escribe sobre la pizarra.
Nosotros podemos aprender los principios generales que él trata de transmitir usando su voz, sus gestos, y los rastros que deja la tiza sobre la pizarra durante algunos de los erráticos gestos.

Sin embargo, vemos con cierta frecuencia que hay personas que copian cada frase de lo que indica el profesor. Según mi experiencia docente me ha hecho reflexionar, hay muchas cosas que uno como profesor dice, que no es realmente necesario copiar (algunas hasta el profesor se arrepentiría de decirlas!).

Un estudiante podría copiar incluso esquemas de la gesticulación, cuantas veces la persona ha respirado en una pausa, o la intensidad de un ataque de tos. Obviamente estoy exagerando, pero ese es el punto: la exageración.

Es esa es la parte que sobra, cuando hay "sobre-entrenamiento", "sobre-aprendizaje", o "sobre-ajuste". Es decir, la parte "over" del overfitting.

Uno no necesita aprender los gestos y ruidos (palabras innecesarias) del profesor. Ellos incluso podrían distorcionar el concepto general que se trata de explicar.

En nuestro cuaderno, deberíamos ser lo más simples posibles. ¡Apéguense a la navaja de Ockham, muchachos!.


ejemplo inhumano...


De igual forma, uno puede tener una serie de datos, y usar un modelo matemático para "aprender" su patrón. Digamos que queremos hacer una regresión. El mínimo error siempre es deseable, pero no a cualquier precio. Uno podría tener puntos que son bastante cercanos a un modelo lineal, aunque los puntos no están exactamente sobre la recta que hemos trazado, lo cuál daría una cierta cantidad de error.

El caso del sobre-ajuste, sería uno en el que decidiéramos usar una función más compleja que una simple recta, para que pase por todos los puntos, tal y como se ve en la figura de abajo (cortesía de wikipedia):

En esta curva de 8vo grado (polinomio de grado 8), estamos estimando 9 parámetros para obtener la función,... para ajustarla sobre 10 puntos. Es decir, estamos consiguiendo un modelo matemático casi tan complejo como los datos que representa. Si tenemos en cuenta que un modelo se supone que debe representar de forma simple el comportamiento de los datos (una especie de "resumen" del comportamiento de los mismos), pareciera que acá terminamos teniendo un modelo "poco eficiente".

Sin embargo, no es sólo un problema de poca eficiencia. Si tenemos en cuenta que estos modelos frecuentemente se utilizan para predecir la "aparición" de otros puntos que por los momentos desconocemos, nos daremos cuenta de algo muy interesante:

A medida que aumentamos la complejidad de la función, la capacidad de pronosticar (o generalizar) al principio aumenta, pero llegado cierto punto, empieza a decaer. El principio de la navaja de Ockham, mostrado gráficamente.


¿Por qué?

La respuesta no es difícil. En la gráfica siguiente, si proyectamos como se mueve la función elaborada, entre el 0 y el 1 (en el eje "x"), vemos que se aleja bastante de la recta que pasa cerca de los puntos. Pero ¿realmente las distancias que tienen los puntos de la recta dan pie a que pensemos que el punto que va entre el 0 y el 1 esté tan lejos del valor que nos predice el modelo lineal?

La respuesta es no, inclusive de forma intuitiva, aunque, como veremos, no es necesario acudir al no tan común "sentido común" para confiar en lo que dije arriba.


típico overfitting en redes neurales


Las redes neurales artificiales han sido utilizadas con frecuencia para ajustarse a funciones. Uno consigue medir en un proceso ciertos datos, y trata de estimar la función que hay "detrás" de los datos, para tratar de predecir los datos en otros lugares en donde no hemos medido por alguna razón (imposibilidad temporal, técnica, financiera, riesgo, etc.).

Bien, típicamente esto se hace de la siguiente forma:
  1. Se elige un subconjunto de los datos, de forma aleatoria, para conformar el "conjunto de prueba" o "conjunto de validación".
  2. El resto de los datos conforman el "conjunto de entrenamiento".
  3. Se dan valores iniciales a los parámetros de todas las neuronas de la red.
  4. Se "muestra" un dato a la red, y se compara la salida de la red con la salida que debería haber dado. La diferencia entre lo deseado y lo que se ha obtenido de la red, se utiliza como información para regañar a las neuronas que se portan mal (ajustando los parámetros).
  5. Se repite el paso anterior, hasta que el error de la salida de la red se estabiliza en un margen aceptable.

Este proceso puede ser muy vario-pinto en las estrategias a seguir para:

  • elegir el número y disposición de neuronas,
  • elegir el kernel a utilizar,
  • definir la sensibilidad que tienen los ajustes respecto a los errores cometidos por la red,
  • y decidirse entre la acumulación de ajustes luego de "ver" todos los datos de entrenamiento versus la realización de ajusted luego de "ver" cada dato individual.
En la práctica, durante el proceso se evalúa el trabajo predictivo de la red ante los datos del conjunto de validación (que la red nunca ha usado para entrenarse). Esa evaluación permite observar qué tanta capacidad de generalización tiene el modelo.

La experiencia tiende a mostrar el siguiente patrón:
  1. Con los primeros ajustes, poco a poco crece la eficiencia con que se logran predecir los resultados del conjunto de validación.
  2. Llegado cierto punto, no se logra mayor mejora en la eficiencia de la red ante el conjunto de validación. Sin embargo, sigue mejorando la eficiencia ante el conjunto de entrenamiento.
  3. Más allá de ese punto, aunque la eficiencia con que la función se aproxima a los datos de entrenamiento se puede acercar a la perfección, el resultado ante el conjunto de validación ha empezado a empeorar.

El comportamiento del paso 3, es una muestra numérica del concepto que vimos anteriormente de forma intuitiva, como sobre-ajuste. Empieza a ocurrir, si lo vemos en la figura de abajo (también cortesía de wikipedia), en el momento en el que la curva de color rojo deja de bajar. Esta mide el error de la red en el conjunto de validación.


He acá al principio de la navaja de Ockham, demostrado estadísticamente.

Procesos "constructivos"

Este comportamiento también puede verse en los procesos de entrenamiento constructivos, que van generando neuronas en la red (o ramificaciones en un árbol), haciéndola cada vez más compleja, para ir aprendiendo el patrón. Al inicio, con pocas neuronas (o en árboles de clasificación, con pocas hojas) ambas eficiencias crecen, y la de entrenamiento logra la perfección absoluta, mientras que en algún momento el bulto del conjunto de validación se nos ha caído en el camino.



En la imágen de arriba (nuevamente cortesía de wikipedia) se observa claramente como el clasificador representado por la línea verde se ajusta a la perfección a la data de entrenamiento. Sin embargo, el clasificador de la línea negra (mucho más sencillo), probablemente tendrá mejor capacidad de geralización. Éste es un buen ejemplo del tipo de superficies clasificadoras que resultan cuando una red tiene demasiadas neuronas, y demasiado entrenadas. [adición del autor el 31-03-08]

Esto que acabo de comentar es el tipo de procesos como el que hablamos sobre el polinomio de grado 8. Ir hacia la derecha en el gráfico de arriba, es ir aumentando el nivel del polinomio a usar para hacer la regresión sobre los datos.


¿Y cómo hacemos?

La manera de apegarse a la navaja de Ockham más evidente, es ir revisando el comportamiento de nuestro modelo sobre data de validación.

Se recomiendan técnicas como:

En general, estas herramientas permiten algún nivel de análisis para determinar si un trabajo más complejo o largo, está ayudando o no a la capacidad de generalización (predecir valores no vistos durante el entrenamiento o determinación de parámetros).

En un trabajo que estoy realizando actualmente en conjunto con el Prof. Ubaldo García Palomares, hemos incluído dentro de un algoritmo de generación y entrenamiento de una red neural de una capa oculta, para clasificación binaria, unas instrucciones que permiten que el algoritmo se detenga cuando ya no es posible mejorar la capacidad de generalización. Pero eso es parte de otra historia...

¡Espero que esto pueda ayudarte, Marc!

martes, marzo 25, 2008

Usando creyones para entrenar máquinas

Tuve la fortuna de toparme con un post del blog de Greg Linden, en el que se nos muestra un excelente ejemplo de lo que es el Aprendizaje Interactivo aplicado al procesamiento/reconocimiento de imágenes, mostrado por Dan Olsen de la Brigham Young University.

Se trata del uso de una interfaz para el usuario, en la que éste usa herramientas tipo creyón. En uno de los videos, se muestran imágenes donde una mano está sobre un escritorio. Un creyón es utilizado para marcar áreas de la imágen que el usuario quiere indicar que corresponden a piel. Otro es utilizado para marcar áreas de la imágen que el usuario quiere indicar que corresponden al "fondo" (cualquier cosa menos piel).

Una vez la máquina recibe esa información, la analiza, y en base a las características que tenían las áreas marcadas con ambos creyones clasifica el resto de la imágen como "piel" o "fondo". El usuario tiene entonces la oportunidad de usar los creyones para "corregir" los errores que cometió el software, marcando con el creyón "piel" aquellos puntos que la máquina clasificó como "fondo" pero eran "piel". Obviamente también se marca con el creyón ""fondo" aquellos puntos que la máquina clasificó como "piel" pero eran "fondo".

Luego de 4 minutos, el clasificador obtuvo excelentes resultados en otras imágenes donde aparece la mano, en diferentes posiciones, y una última en la que no aparece mano alguna. Siempre con alguno que otro pixel mal clasificado, pero realmente asombroso, a mi modo de ver.

Otro de los videos muestra un uso genial de este tipo de herramientas, para enseñar a un robot a manejar. Se muestran dos imágenes tomadas de la cámara que tiene el robot. En una se usan dos creyones: uno para marcar terreno "seguro", y uno para marcar terreno "inseguro". En esa misma imágen, luego de usar los creyones, se colorea la imágen según la máquina clasifica cada pixel como "seguro" o "inseguro". La otra imágen se usa para manejar al robot, indicándole hacia dónde debe ir.

El usuario, luego de marcar como "inseguro" aquellos lugares que se desea que el robot esquive, y como "seguro" aquellos lugares por los cuales el robot puede andar, le da la instrucción de caminar. En "tiempo real", las imágenes van actualizándose por la entrada de video, y el clasificador las va coloreando, y en base a ello, ajusta la trayectoria del robot. Si en algún lugar del camino, el usuario detecta que el clasificador ha cometido errores, detiene el robot y usa los creyones para corregir, y luego puede continuar.

¿Será que pronto usaremos esto para un rover en la Luna o Marte?

Si es así, ¡ojalá que algún día uno de los modelos matemáticos de clasificación que manden de viaje sea uno mío! Soñar no cuesta nada... ¿eh?

Visíten el post. Está en este URL:
http://glinden.blogspot.com/2007/12/interactive-machine-learning-talk.html