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

    Leave a Reply

    Required fields are marked *.