Post Format

La maldita práctica

Cuando ya creí­a que lo más gordo de la carrera habí­a pasado, pues resulta que aún quedaban algunas pruebas especiales con las que sufrir, tal sadismo no se habí­a visto ni en Humor Amarillo.

Pues bien, voy a tratar de explicar aquí­ de que va la maldita práctica, de la forma lo más sencilla que pueda:

Se trata de hacer una red de neuronas artificiales (que viene siendo una estructura matemática un tanto compleja) para clasificar cosas como imágenes de radiografí­as en “cancer brutal” y “no le pasa nada”, o clasificar pollos entre machos y hembras, etc. De las aplicaciones hablaremos al final.

En este ejemplo vamos a clasificar las posiciones de una imágen:
peque.

Para ello elegimos unos patrones, o puntos de muestra, representados por los puntos verdes. En este caso, elegimos puntos aleatorios:
patrones.

Ahora, representamos la red de neuronas en la imagen. Al principio, los centros estan en sitios aleatorios tambien.
mapa_1.

Despues del entrenamiento (proceso en que los puntos de la red intentan acercarse a las posiciones de los patrones, es decir, los puntos rojos intentan acercarse a los verdes), la cosa queda asi:

mapa_2

Los puntos de la imagen mas cercanos a cada centro de clasificacion (puntos rojos) serian de esa clase. Es decir, hay 16 clases distintas en la imagen. Ahora, mediante un algoritmo nada sencillo, clasificamos esas 6 clases en 4 clases finales, y las representamos en color:

segmentacion_final

¿Sencillo, verdad? Pues no. Algunas partes son sencillas, otras son terriblemente. Por ejemplo, ¿cómo re-clasificar las 16 clases en 4 clases finales? El problema se replantea: Dados ‘x’ puntos de dimensión ‘n’, ¿cómo clasificarlos en ‘K’ clases de forma que la distancia entre puntos de la misma clase sea la minima posible? Varias formas:

  • Creación dinámica de clases a partir de un umbral.
  • Recorrer las clases y añadir elementos contiguos a la misma clase o crear dos clases en base a su distancia. Vaya, el problema está en que el número de clases está definida, no puede ser dinámico. El código a la basura.
  • Iteracion del algoritmo anterior hasta que de un número ‘K’ de clases
  • Problemas: complicación de hacerlo en 2-D, problemas de convergencia y de inicialización de umbral. Nada, otra cosa.
  • Algoritmo K-Means
  • Algoritmo tí­pico de clasificación, me pasé todo el miércoles implementándolo en Matlab. Problema: acojonante dependencia de la inicialización aleatoria de las K clases. Lo solucioné parcialmente haciéndolo iterativo hasta encontrar una solución razonable, pero no me acababa de convencer.
  • Agrupación de las dos clases con distancia mí­nima hasta que sólo queden K clases
  • Gracias a un compañero de clase, ese es el actual. Falta pulirlo un poco pero parece hacer bien el trabajo.

    Ayer en el bus escuchaba a una chica que tení­a problemas para acabar un trabajo con el que aprobarí­a una asignatura: Consistí­a en pegar hojas en una cartulina, pero en esta época no hay hojas de castaño. Ya no es sólo la diferencia abismal de dificultad de las prácticas, es que yo tengo que tener esta práctica perfecta para poder ir a un examen que es la mitad de la asignatura con menos créditos de mi carrera.

    ¿Entendéis ahora mi odio y ganas de matar?

    One comment

    Deja una respuesta

    Required fields are marked *.