Redes Convolucionales

El primer modelo de Deep Learning Moderna sumamente importante porque se usa en la actualidad, la idea de las Redes Convolucionales es aplicarla a imagenes, pero tambien se puede aplicar a otras cosas

Supongamos que la red Convoluciona en estas imagenes sirve para clasificar si es un gato o un perro, lo que se hacia antes era que el dato era la imagen, y teniamos una matriz de n*n mas un ancho de 3 si es rgb, todos esos pixeles, los podemos planchar en un unico vector de un monton de dimensiones, en base a eso, teniamos que generar un serie de features, una representacion de la imagen en la cual podemos aplicar ejemplo una red neuronal con una funcion SoftMax al final que nos diga de que clase es. Antes el problema era como representar los features que representen la imagen, entonces podriamos crear cual el promedio del color central de la imagen, o pasar un filtro a esa imagen y el valor de ese filtro es otro feature, todo este problema de representacion era algo artesanal y despues utilizamos un modelo de Machine Learning para en base a esos features realizar la prediccion, lo que las Redes Convoluciones vienen a solucionar es justamente el problema de representacion, encontrar automaticamente la representacion de la imagen que nos sirve para alguna tarea, como clasificar, una forma de hacerlo es mediante filtros Convoluciones.

Filtros Convolucionales

Un filtro convolucional es simplemente una convolucion de una zona de la imagen.

FIltro Convolucional
FIltro Convolucional

suponemos que esa es una imagen, y aplicamos un filtro/kernel de 3 por tres, y superponemos con la imagen, y hacemos el producto, 2 por 1 mas 4 por 2 mas 9 por 3 mas 2 por menos 4 mass 1 por 7 ……. es igual a 51, luego el filtro lo desplazamos a la zona de al lado de 3*3 es decir 4 por 1 + 9 *2 + 1*3 + 1*-4…. y ahi tenemos el valor siguiente. y asi con todos.

El tamaño del feature depende del tamaño del filtro, de cuanto nos movemos con el filtro, si padeamos la imagen ect.

Hiperparametro del Filtro a definir:

1-Cantidad de filtros a definir

2-Tamaño del filtro( ejemplo 3*3)

3-Stride( paso)

4-Padding

Los parametros son los coeficientes del filtro y eso lo aprende la red convolucional , esto es la gran ventaja es cuales son los coeficientes del filtro que les va a convenir para representar la imagen, que finalmente sirva para realizar la tarea de clasificacion, en general las redes convolucionales alternas etapas de convolucion donde se aplican estos filtros y maxpooling.

MaxPooling

En maxpooling para secciones mas importantes se obtiene la feature mas importante. Es otra manera de obtener informacion local.

MaxPooling Red Convolucional
MaxPooling Red Convolucional

Vemos que usamos un filtro de 2*2 con un stride (desplazamiento) de 2.Lo que logramos al hacer esto es reducir la matriz de la imagen a menor dimension, ademas como sacamos el mayor numero de ese filtro, lo que logramos ademas es que la red sea invariante a ciertos movimientos y rotaciones de la imagen, como encontramos el maximo de una zona y esa zona se desplaza o rota, no importara porque sacamos el maximo, y hallamos una invariancia que es muy importante a la hora de clasificar imagenes.

Como quedaria la Red Convolucional

Red Convolucional
Red Convolucional

Entonces tenemos etapas de Convolucion, etapas de MaxPooling, etapas de Convolucion, etapas de MaxPooling y al final planchar todo esto en un vector de muchas dimensiones, que finalmente aplicaremos un algoritmo de Red Neuronal Convencial( Fully connected MLP )

Si aplicaramos una red fullly connected MLP al principio del imagen, tendriamos un problema. La imagen ejemplo tiene 400*400 , y ya la primer capa si mapeara a una dimension de 4000, tendriamos una cantidad de parametros gigante de 400*400*4000!! solo en la primer capa, entonces es casi imposible porque tendriamos una cantidad de hiperparametros que seria imposible overfittear, necesitariamos trillones y trillones de imagenes para que no overfitee.

Encambio los filtros convolucionales reducen eso ya que la cantidad de parametros depende del tamaño de filtro y cantidad de el y con etapas de maxpooling, observar que por cada filtro reducimos la cantidad de parametros( son los valores de adentro de la minimatriz el cual es ajustado por la red convolucional). En donde aparece la mayor cantidad de parametros es en la etapa de fully connected, donde si tenemos un vector de 4000 y usamos una capa intermedia de 400 neuronas, entonces vamos a tener 4000*400 parametros, entonces las redes convolucionales tiene la mayor cantidad de parametros en la etapa de fully connected.

Como se usa una Red Convolucional?

Podemos utilzar un red Neuronal preentrenada con millones de imagenes, y solamente tendremos que utilizar el resultado de esas capas, parametros que halla aprendido la red y aplicarlo a nuestra imagen, y no necesitamos entrenar la red con tantas cosas , ejemplo de redes preentrenadas son vgg y lo adecuamos a nuestro problema, ya que el ya aprendio a usar los filtros en su entrenamiento anterior para representar una foto, y nosotros solo debemos entrenarlo a que aprenda ejmplo que es un mouse o teclado para que pueda representarlo y distinguirlos .

Convolucion Neural Network

Convolucion Neural Network
Convolucion Neural Network

Vemos que aprende cosas simple al principio, como bordes ect, y su complejidad va aumentando

Resultados

Lo que se llama ahora el estado del arte son la redes convolucionaes de preeprocesamiento de imagenes es con Imagenet 2012, con una base de datos grandes, y reconocmiento hasta 1000 objetos distintos, en algunos resultados la red convolucional profunda es mejor que un humano, y esta arriba un acierto del 95 por ciento para reconocimiento de imagenes.

Redes Convolucionales para Texto

Para eso representamos una palabra en un vector de n dimensiones mediante embedding, las formas mas usuales para crear embedding son con word2vec y Glove, o podemos usar embedding ya creados en el idema que usemos. Entonces nuestro texto es un conjunto de vectores de 200 dimensiones en este caso, teniendo una forma parecida al de una imagen.

Convolucion Neural Network
Convolucion Neural Network

La idea es aplicar filtros de en este caso 5 dimensiones con un altura variable, a cada filtro le aplicamos mapooling, observar que este filtro se desplaza, por lo tanto en el primer filtro vamos a tener 4 maxpooling, y asi con los otros filtros de distinta altura, despuess unimos esos resultados al cual al final de aplicamos un algoritmo de fully conected, y bueno concluyendo con una funcion softmax para clasificar si el texto tiene sentimiento positivo o negativo, o de clasificar otras cosas, son muy rapidas de calcular, aunque dice que es 1D con el truquito de conjunto de embedding de palabras logramos algo similar a lo que teniamos con una imagen.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *