Sesion 20 de Mayo: Problemas con grandes datos y estrategias¶
Recursos¶
https://colab.research.google.com/drive/1a_DCF76joqOyLbCLgV6tx4oKYX408Ofs?usp=sharing
Problemas con las redes neuronales y los grandes datos¶
Problema 1: Cantidad de datos
Una imagen pequeña genera pocos pesos, pero una imagen grande si, por ejemplo 12801280 en blanco genera más de 1 millon de pesos, o si fuera a color, fuera 12801280*3 más de 3 millones
Problema 2: Capacidad de tolerar el ruido
Como la red recibe un vector aplanado, no es posible diferenciar o agrupar caracteristicas, por ende, cualquier cambio en la imágen altera el resultado de forma importante, es decir, es más dificil de entrenar
Problema 3: Encontrar patrones dentro de la imagen
No es facil identificar patrones dentro de la red o tomar diferencias sutiles, por ejemplo color de piel y el color de la arena
Redes Convolucionales CNN¶
¿Que son?
Son redes que tienen varias etapas, las primeras son para extraer información de los datos de entrada a través de convoluciones y pooling.
Posteriormente la información procesada la mandamos a una capa densa MLP que hace la CLASIFICACION
Capa convolucional
Extrae mapas de la entrada, usando kernels (funciones), la idea es extraer caracteristicas, pero aumenta el número de pesos a calcular (hay que tener cuidado)
Capa pooling
Reduce el tamaño de los mapas, sin embargo hay perdida información, porque suele sacar promedios (average) o sacar máximos (max)

¿Como funciona una red convolucional?¶
¿Que hace una capa convolutional?
Tomar un kernel de tamaño nxn, usualmente es 2x2, 3x3 y así, es una matriz cuadrada, esta se aplica una producto punto con una ventana deslizante, la cual es el stride

¿Que hace una capa de pooling?
Una capa de pooling toma un segmento del mapa de tamaño nxn y nos lo convierte un valor, existe dos tipos: que permite solapar (stride), sin solapamiento.

Lo que podemos ver es que se toma el máximo, para cada ventana.
¿Como alimentamos la red densa?
Para esto debemos hacer flatten(), transformar la matriz en un vector 1D, en este caso 2x2 o un vector 1D de tamaño 4.
[1, 0, 0,1]
Notas¶
Kernel gaussiano

Kernel sobel

Resumen¶
- Las redes neuronales profundas (muchas c apas) tienen muchos problemas para ajustarse (entrenarse) si los datos crecen (imagenes) necesitamos muchos pesos, son dificiles de entrenar, no toleran el ruido (algo de movio levemente en la imagen) y no son capaces de identificar patrones
- Las redes convolucionales tienen varias etapas extrayendo las caracteristicas de los datos (imagen, video, texto, series de datos) y pasandolo a una red densa (MLP)
- Convoluciones que extraen caracteristicas usando un kernel es una matriz de nxn que se desliza por la imagen (con una longitud de stride) y calcula un mapa, el cual pasa por una función de activación (RELU). Esto nos genera un conjunto de mapas.
- Capas de pooling que se encargan de filtrar los mapas, reducirlo, tenemos el maxpooling y el averagepooling (viejo, obsoleto, no estoy de acuerdo), slide es el tamño del mapa y usualmente no se permite que solapen
- Capas de flatten: que es tomar la salida y aplanarla en un vector 1D para poder enviarlo a la RNN
- Capas densas: MLP (backpropagation) y ahi calificacmos
- Se suele tener de salida una capa softmax (solo toma como 1 la neurona que tiene mayor valor) one-hot-encoding, solo se activa una salida a vez. [0.5, 0.3, 0.1, 0.7] → [0, 0,0, 1]