Redes Neuronales
Convolucionales / Recurrentes
Dr. Manuel Castillo-Cara
[Link]
Departamento de Inteligencia Artificial
Escuela Técnica Superior de Ingeniería Informática
Universidad Nacional de Educación a Distancia (UNED)
Preliminar
●
Conceptos avanzados de redes neuronales © 2023 by Manuel
Castillo-Cara is licensed under Attribution-NonCommercial
4.0 International
Índice
●
Redes Neuronales Convolucionales
– Operación Convolución
– Operación Pooling
– DEMO
– Hacia la estandarización
●
Redes Neuronales Recurrentes
– Transmisión de conocimiento en RNN
– Redes Neuronales Recurrentes LSTM
Redes Neuronales Convolucionales
Background
Capas convolucionales
Capas de agrupación (pooling)
Capas completamente conectadas
5. Ejemplo
Imagen de entrada (32x32)
Input
32x32x1
(B/N)
5. Ejemplo
Imagen de entrada (32x32)
Input Convolution
10 filtros
32x32x1 5px ancho
(B/N) 5px alto
ReLu
5. Ejemplo
Imagen de entrada (32x32)
Input Convolution Agrupación
10 filtros
pooling
32x32x1 5px ancho
2x2
(B/N) 5px alto
ReLu
5. Ejemplo
Imagen de entrada (32x32)
Input Convolution Agrupación Fully Connected
10 filtros Feed
pooling
32x32x1 5px ancho Fordward
2x2
(B/N) 5px alto Softmax
ReLu
6. Consejos
●
Dimensiones del campo receptivo de entrada:
●
Tamaño del campo receptivo
●
Ancho de stride
●
Número de filtros
●
Relleno
●
Pooling
●
Preparación de datos
●
Arquitectura de patrones
●
Dropout
Operación Convolución
Operación convolución (I)
●
La primera capa oculta de una CNN se suele corresponder con una capa
convolucional, la cual puede entenderse como la codificación necesaria para la
aplicación de filtros (conocidos como funciones kernel)
●
Para una mejor comprensión de la operación convolución, pensemos en una capa de
entrada que codifica una imagen binaria (B/N) y una convolución con la que
queremos representar un filtro de detección de bordes.
Operación convolución (II)
●
Sin entrar en más detalles, la búsqueda de bordes se basa en buscar grandes diferencias
entre un píxel y los píxeles que le rodean
●
El mismo tipo de operación la queremos realizar sobre la imagen completa, por lo que
aparece una primera cualidad: el uso de pesos compartidos
– Esto significa que los parámetros / condiciones para detectar un borde en un pixel de
la imagen deben ser iguales en todas las otras zonas de la imagen
Ejemplo
●
Asumiendo una imagen de 10x10 píxeles, si la detección de un
borde necesita trabajar con los 8 píxeles que le rodean
tendríamos lo siguiente
Ejemplo
Operación convolución (I)
●
En la imagen mostramos un filtro que se
puede aplicar únicamente sobre las
zonas resaltadas
●
Trasladando el problema a resolver
sobre la topología de una CNN,
incluiríamos una capa inicial con 100
neuronas (puede mostrarse visualmente
como una matriz de 10x10)
●
La primera capa oculta contará con una
neurona por cada resultado del filtro
→ tendrá 8x8 neuronas
Ejemplo
Operación convolución (I)
●
En la imagen mostramos un filtro que se
puede aplicar únicamente sobre las
zonas resaltadas
●
Trasladando el problema a resolver
sobre la topología de una CNN,
incluiríamos una capa inicial con 100
neuronas (puede mostrarse visualmente
como una matriz de 10x10)
●
La primera capa oculta contará con una
neurona por cada resultado del filtro
→ tendrá 8x8 neuronas
Ejemplo
Operación convolución (I)
●
En la imagen mostramos un filtro que se
puede aplicar únicamente sobre las
zonas resaltadas
●
Trasladando el problema a resolver
sobre la topología de una CNN,
incluiríamos una capa inicial con 100
neuronas (puede mostrarse visualmente
como una matriz de 10x10)
●
La primera capa oculta contará con una
neurona por cada resultado del filtro
→ tendrá 8x8 neuronas
Ejemplo
Operación convolución (II)
●
Cada una de estas 64 neuronas estará
conectada con 9 neuronas de la capa inicial,
pero los pesos utilizados en esta interacción
w1...w9 serán compartidos por todas las
neuronas de esta capa oculta
●
Esto simplifica el aprendizaje
enormemente, además de dar coherencia
al filtro a realizar
●
Una vez aprendida, la función de activación
(ReLU normalmente) nos permitirá saber
qué píxel de la imagen se corresponde o
no con un borde
Ejemplo
Operación convolución (II)
●
Cada una de estas 64 neuronas estará
conectada con 9 neuronas de la capa inicial,
pero los pesos utilizados en esta interacción
w1...w9 serán compartidos por todas las
neuronas de esta capa oculta
●
Esto simplifica el aprendizaje
enormemente, además de dar coherencia
al filtro a realizar
●
Una vez aprendida, la función de activación
(ReLU normalmente) nos permitirá saber
qué píxel de la imagen se corresponde o
no con un borde
Ejemplo
Operación convolución (II)
●
Cada una de estas 64 neuronas estará
conectada con 9 neuronas de la capa inicial,
pero los pesos utilizados en esta interacción
w1...w9 serán compartidos por todas las
neuronas de esta capa oculta
●
Esto simplifica el aprendizaje
enormemente, además de dar coherencia
al filtro a realizar
●
Una vez aprendida, la función de activación
(ReLU normalmente) nos permitirá saber
qué píxel de la imagen se corresponde o
no con un borde
Ejemplo
Operación convolución (III)
●
En el ejemplo propuesto, se plantean
convoluciones que involucran tanto al píxel
bajo estudio, como los 8 píxeles a su
alrededor (3x3)
●
Además, se asume que esta operación se
realiza uno a uno, pero sólo sobre los píxeles
de la imagen que es posible (salvo las filas /
columnas 0 y 9), obteniendo como resultado
una capa de tamaño inferior (10x10 →
8x8)
→ 2 parámetros definen esta
configuración: padding y stride
Ejemplo
Operación convolución (III)
●
En el ejemplo propuesto, se plantean
convoluciones que involucran tanto al píxel
bajo estudio, como los 8 píxeles a su
alrededor (3x3)
●
Además, se asume que esta operación se
realiza uno a uno, pero sólo sobre los píxeles
de la imagen que es posible (salvo las filas /
columnas 0 y 9), obteniendo como resultado
una capa de tamaño inferior (10x10 →
8x8)
→ 2 parámetros definen esta
configuración: padding y stride
Ejemplo
Operación convolución (IV)
Padding
Definición
●
El parámetro padding (opcional) define una serie de neuronas sintéticas usadas a modo de relleno,
de forma que se permite realizar convoluciones sin que la capa resultado sea de un tamaño menor a
la de entrada
●
Estas neuronas deben tomar un valor para la realización de las operaciones, siendo cero el valor más
usado.
– En este caso nos referimos a este parámetro como zero-padding N (N = número de neuronas
adicionales)
Padding
Ejemplo
●
Veamos un ejemplo con imágenes de 6x6 y un filtro de 3x3
Stride
Definición
●
El parámetro stride nos indica el número de neuronas a avanzar tras la aplicación de una
convolución
●
Para entender este parámetro recurrimos a la organización espacial: Usando una matriz de dos
dimensiones, un valor de stride 2 nos indicará que tras aplicar una convolución:
– La siguiente se realizará dos columnas a la derecha, y
– tras terminar la fila actual, la siguiente a procesar se seleccionará tras bajar dos filas
Stride
Ejemplo
●
Veamos un ejemplo con imágenes de 6x6 y un filtro de 3x3
Operación Pooling
Definición
●
La operación pooling tiene por objetivo reducir la dimensionalidad de las
capas generadas tras la aplicación de operaciones de convolución
●
Recordando que las capas disponen de tres dimensiones (ancho x alto x
profundidad), la reducción se aplicaría únicamente sobre las dimensiones de
anchura y altura, sin afectar a la profundidad de estas capas
Ejemplo
●
Sobre un ejemplo simple, asumamos que trabajamos con
imágenes 640x480 (B/N) y que la primera convolución
aplica 32 filtros de 3x3 (stride 1, zero-padding 1)
– El resultado será una capa intermedia de 640x480x32
●
Una operación pooling reduciendo la dimensionalidad
a un 25% de la original obtendría una nueva capa
intermedia de 320x240x32
Ejemplo
●
Sobre un ejemplo simple, asumamos que trabajamos con
imágenes 640x480 (B/N) y que la primera convolución
aplica 32 filtros de 3x3 (stride 1, zero-padding 1)
– El resultado será una capa intermedia de 640x480x32
●
Una operación pooling reduciendo la dimensionalidad
a un 25% de la original obtendría una nueva capa
intermedia de 320x240x32
Ejemplo
Max-pooling
●
La operación de pooling más común es max-pooling, donde cada operación computa
el máximo para una serie de neuronas conectadas espacialmente
●
Su aplicación se realiza a través de un filtro de tamaño NxM, normalmente M=N (se
define como extensión espacial).
– También se usa el parámetro stride que determinará el factor de reducción de
dimensionalidad
Max-pooling
Ejemplo de max-pooling 2x2 con stride=2
Consideraciones
●
A nivel práctico, el uso de filtros mayores a 3x3, o de un valor de stride superior a
2, suele generar malos resultados → desaconsejamos su uso
●
Como alternativas al max-pooling, podemos reemplazar la función máximo por
otras funciones como la media.
– Sin embargo, la experiencia ha mostrado el mayor poder de la función máximo
DEMO
ConvNetJS
Enlace: [Link]
Hacia la estandarización
1. Transfer Learning
2. Finetunning
Redes Neuronales Recurrentes
Background
CNN vs. RNN
Background
CNN vs. RNN
Dato (imagen, secuecnia,
palabra, etc) a clasificar
¿Qué pasa si se introduce
una secuencia?
Background
CNN vs. RNN
Dato (imagen, secuecnia,
palabra, etc) a clasificar
¿Qué pasa si se introduce
una secuencia?
Background
CNN vs. RNN
Dato (imagen, secuecnia,
palabra, etc) a clasificar
¿Qué pasa si se introduce
una secuencia?
Secuencia (conversación,
texto, vídeo) de datos con orden
Los datos están correlacionados
dependiendo del texto anterior
Background
CNN vs. RNN
Dato (imagen, secuecnia,
palabra, etc) a clasificar
¿Qué pasa si se introduce
una secuencia?
Para ello utiliza la activación
de la iteración anterior
para dar nuevos resultados,
i.e., tiene memoria
Generación de texto
Fuente: [Link]
Transmisión de conocimiento en RNN
Funcionamiento (I)
●
Un mismo modelo de RNN se pueden representar
de forma plegada o desplegada.
– Desplegado “en tiempo”.
Funcionamiento (I)
●
Un mismo modelo de RNN se pueden representar
de forma plegada o desplegada.
– Desplegado “en tiempo”.
Podemos observar que el estado actual
viene dado de la activación anterior (St-1),
el dato actual (Xt); mientras la salida es
la predicción actual (Yt), la activación
actual (St) y los pesos (W)
Funcionamiento (I)
●
Un mismo modelo de RNN se pueden representar de forma
plegada o desplegada.
– Desplegado “en tiempo”.
La activación actual (St), llamadas
estado oculto, son las que permiten
preservar y compartir la información
entre un estado y otro
Funcionamiento (II)
La neurona tradicional
X1
f(w1x1+w2x2+w3x3)
X2 Y1= f(wx+b)
X3
Funcionamiento (II)
La neurona tradicional
Transformación
X1
f(w1x1+w2x2+w3x3)
X2 Y1= f(wx+b)
X3
Funcionamiento (II)
La neurona tradicional
Transformación
X1
f(w1x1+w2x2+w3x3)
X2 Y1= f(wx+b)
Función de activación
X3
Funcionamiento (II)
RNN
at-1
Xt
Funcionamiento (II)
RNN
at-1 at= f(waaat-1 + waxxt + ba)
Xt
Funcionamiento (II)
RNN
Transformación de la
activación anterior y
entrada actual
at-1 at= f(waaat-1 + waxxt + ba)
Xt
Funcionamiento (II)
RNN
Transformación de la
activación anterior y
entrada actual
at-1 at= f(waaat-1 + waxxt + ba)
Función de activación
Xt
Funcionamiento (II)
RNN
Transformación de la
activación anterior y
entrada actual
at-1 at= f(waaat-1 + waxxt + ba) Pesos y bayes se calcula
con el entrenamiento
Función de activación
Xt
Funcionamiento (II)
RNN
yt= g(wyaat + by)
at-1 at= f(waaat-1 + waxxt + ba)
Xt
Funcionamiento (II)
RNN
yt= g(wyaat + by)
Transformación de la
activación anterior
at-1 at= f(waaat-1 + waxxt + ba)
Xt
Funcionamiento (II)
RNN
yt= g(wyaat + by)
Transformación de la
activación anterior
Función de activación
at-1 at= f(waaat-1 + waxxt + ba)
Xt
Funcionamiento (II)
RNN
Pesos y bayes se calcula
yt= g(wyaat + by) con el entrenamiento
Transformación de la
activación anterior
Función de activación
at-1 at= f(waaat-1 + waxxt + ba)
Xt
Funcionamiento (II)
RNN
yt= g(wyaat + by) Podemos observar la
recurrencia con
instantes anteriores
at-1 at= f(waaat-1 + waxxt + ba)
Xt
LSTM
1. Background
LSTM
Fuente: [Link]
LSTM (I)
●
Unidades más complejas para gestionar memoria a corto plazo y memoria a largo plazo.
– Permite que el backpropagation pueda realizarse con una temporalidad mayor al
descartar datos de corto/lago plazo
– Consta de 4 puertas para controlar el flujo de información:
LSTM (II)
●
Cada una de estas puertas están compuestas por una red
neuronal, una función sigmoidal y un elemento multiplicador
LSTM (II)
●
Cada una de estas puertas están compuestas por una red
neuronal, una función sigmoidal y un elemento multiplicador
LSTM (III)
La función de activación le dará el
comportamiento de válvula (si deja
pasar el dato o no )
LSTM (IV)
●
Learn gate: Combina la entrada actual y la memoria a corto plazo.
– La Sigmoide selecciona datos y establece cuales serán los que aprender
LSTM (V)
●
Forget gate: Olvida parte de la entrada de la memoria a largo plazo (el
“factor de olvido” depende de la entrada actual y la memoria a corto plazo).
– Permite decir qué información descartar y no pasar a la celda de estado
LSTM (VI)
●
Remember gate: Combina la memoria a corto plazo (salida de la
learn gate) y la memoria a largo plazo (salida de la forget gate).
– Decide qué recordar de las dos puertas anteriores
LSTM (VII)
●
Use gate: Combina la entrada actual, la memoria a corto plazo y la
memoria a largo plazo (salida de learn gate) para generar la nueva
memoria a corto plazo y la salida.
LSTM (VI)
●
La salida de memoria a corto plazo y memoria a largo
plazo sirve para realimentar la siguiente entrada.
¡Gracias!
Dr. Manuel Castillo-Cara
[Link]
Departamento de Inteligencia Artificial
Escuela Técnica Superior de Ingeniería Informática
Universidad Nacional de Educación a Distancia (UNED)