[REDES NEURONALES CONVOLUCIONALES] CONVOLUCIONALES]
Dr. Erik Zamora
Enfocado: a enseñar los principios básicos y el estado del arte Basado en Deep Learning Tutorial, Computer Science Department, Stanford University http://ufldl.stanford.edu/tutorial/ Yann LeCun et al. "Convolutional Networks and Applications in Vision" 2010. CS231n: Convolutional Neural Networks for Visual Recognition http://cs231n.stanford.edu/ Eje Conceptual
Aprendizaje
¿Para qué sirve?
o
Descenso por gradiente estocástico
Arquitectura
o
Estrategias adicionales
o
Convolución
o
Retro-propagación
o
No-linealidades
o
Función Objetivo
o
Agrupamiento (Pooling)
Librerías
Demostración en Matlab
Tarea
¿Para qué sirve? Red Neuronal Convolucional: Esta red es diseñada especialmente para procesar datos estructurados en 2D como imágenes o
señales de voz presentadas en espectrogramas. Sin embargo, se pueden adaptar para procesar datos en arreglos multidimensionales de 1D, 3D o más. Su principal ventaja es que tiene menos parámetros a entrenar que una red multicapa con conexión total del mismo número de capas ocultas, por lo que su entrenamiento es más rápido. Además, presenta invarianza a la traslación de los patrones a identificar. Aplicaciones comerciales:
LeNet: Lectura de cheques automático usado en U.SA. y Europa en los 90s en un DSP por AT&T (video http://ow.ly/SCpir LeCun LeCun 98, “Gradient“Gradient -based learning…”)
Reconocimiento de números y letras manuscritas incluyendo caracteres arábigos y chinos por Microsoft (Abdulkader 06, Chellapilla & Simardvideos 06, http://ow.ly/SCtEX http://ow.ly/SCtEX,, http://ow.ly/SCri0 )
Detección y borrado automático de rostros y placas vehiculares para protección de la privacidad en Google Street View (Frome et al. 09, “Large-scale “ Large-scale Privacy Protection …”)
Identificación del género y la edad de los usuarios de máquinas expendedoras por la empresa NEC Labs en Japón (http://ow.ly/SCKhe http://ow.ly/SCKhe))
Detección y seguimiento de clientes en supermercados por NEC Labs (Fan et al. 10, Human Tracking using…” video http://ow.ly/SFqFs )
Detección de intrusos y ladrones por la empresa AgilityVideo (http://www.agilityvideo.com/ http://www.agilityvideo.com/))
Aplicaciones experimentales:
Detección de rostros con record en velocidad y precisión (Nasse et al. 09 “Face Detection using GPU…”)
Identificación de expresiones faciales (video http://ow.ly/SCMyB Kahou et al. 13, “Combining modality…”)
Evasión de obstáculos para robots móviles usando visión (video http://ow.ly/SCN0S Hassell, LeCun et al. 09)
Detección de obstáculos a gran distancia (Hassell, LeCun et al. 09)
Segmentación de imágenes biológicas (Ning 08 “Toward automatic phenotyping…” video http://ow.ly/SFqxg )
Restauración de imágenes (eliminación del ruido) (Jain et al. 08 “Natural image denoising…”)
Reconstrucción de circuitos neuronales a partir de imágenes transversales del cerebro con espesor nanométrico (Jain et al.. 2007 “Supervised learning of image restoration …”)
Y cuando combinan las redes neuronales con algoritmos evolutivos, una computadora puede aprender a jugar Mario Bros (video http://ow.ly/SDKAp Stanley Stanley y Miikkulainen “Evolving “ Evolving Neural Networks .”)
Robot que aprende a hacer tareas (video http://ow.ly/SP3y2 Levine et al. 2015 “End -to-End -to-End Training…”) “La Tecnología y la Ciencia en beneficio de los Mexicanos” “Por nuestra Independencia Intelectual”
1
[REDES NEURONALES CONVOLUCIONALES]
Dr. Erik Zamora
Arquitectura Una red neuronal convolucional es una red multicapa que tiene capas convolucionales y de submuestreo alternadas, y al final tiene capas de conexión total como una red Perceptron multicapa. La entrada de una capa convolucional es una imagen
××
donde
tanto la altura como el ancho de la imagen y
es es
número de canales (en RGB son 3). Las capas convolucionales tienen k filtros (o kernels) cuyas dimensiones son
××
donde
y
son elegidas por el
diseñador y pueden variar de filtro en filtro. Cada filtro genera mediante convolución un mapa de rasgos (feature maps) de tamaño
1
. Después
cada mapa es sub-muestrada con la operación “mean pooling” o “max pooling” sobre regiones contiguas de tamaño
×
donde puede tomar valores desde 2
para imágenes pequeñas (e.g. MNIST) y comúnmente no más de 5 para imágenes grandes. Antes o después del submuestreo, se aplica una función de activación sigmoidal más un sesgo para cada mapa de rasgos. (Figura: las unidades de distintos colores son mapas de rasgos distintos).
Convolución. Problema: En el reconocimiento de imágenes, la conectividad total en las redes Perceptron multicapa es una limitación cuando el tamaño de las imágenes crece. Esta red funciona bien para imágenes pequeñas e.g. 20x20 pixeles, pero con imágenes más grandes e.g. 100x100 pixeles, el número de parámetros a entrenar crece demasiado haciendo lento el aprendizaje. Por lo tanto, es necesario proponer soluciones para agilizar el aprendizaje. Algunas posibles soluciones son:
Redes con conexiones locales (no total). Permitir que las unidades ocultas solo estén conectadas a una región contigua de los pixeles de entrada.
Procesamiento en paralelo (FPGA o GPU)
Redes con Convolución (en seguida las describimos)
La convolución es una operación de productos y sumas entre la imagen de entrada y un filtro (o kernel) que genera un mapa de rasgos. Los rasgos extraídos corresponden a cada posible ubicación del filtro en la imagen original. La ventaja es que el mismo filtro (= neurona) sirve para extraer el mismo rasgo en cualquier parte de la imagen. Esto reduce el número de conexiones y el número de parámetros a entrenar en comparación con una red multicapa de conexión total. Si la imagen es
una capa convolucional, entonces se generan rasgos. Cada rasgo está dado por
× × × 1 × 1 y hay
filtros de
en
mapas de rasgos que en total forman un arreglo de .
Convolución completa: se extiende la imagen para ubicar el filtro en todos sus pixeles. Convolución valida: se convoluciona solo donde ca be el filtro dentro de la imagen.
2 “La Tecnología y la Ciencia en beneficio de los Mexicanos” “Por nuestra Independencia Intelectual”
[REDES NEURONALES CONVOLUCIONALES]
Dr. Erik Zamora
No-linealidades. Después de convolución, se aplica a los mapas de rasgos funciones de activación no lineales como:
+−
Sigmoide Logistica
. Actualmente, se usa muy poco está función porque: 1) satura la salida y mata los
gradientes en la retro-propagación, además, cuando los pesos tienen valores muy grandes pueden saturar las neuronas lo que provoca que el aprendizaje sea malo; 2) no está centrada en cero lo que puede producir una dinámica de zig-zag durante el aprendizaje.
tanh abs gi ∙ tanh
. Da siempre mejores resultados que la sigmoide logística porque es centrada en
Sigmoide Hiperbolica
cero. Aunque sigue presentando el problema de la saturación y desvanecimiento del gradiente.
Sigmoide rectificada
donde
es un parámetro ajustable durante el aprendizaje. Se usa para el
reconocimiento de imágenes naturales y suele ir antes de una normalización de contraste local . Esta normalización forza la competencia entre rasgos adyacentes de un mapa y entre rasgos con la misma localización espacial.
ReLU (Rectified linear unit)
max0,
es muy popular actualmente, y en especial, en las redes profundas porque
acelera el entrenamiento por un factor de 6 (Krizhevsky et al. 2012) comparado con las funciones sigmoide/tanh y evita el problema del desvanecimiento de gradiente cuando hay muchas capas. Esto es debido a que es lineal y no hay saturación en el sentido positivo de su dominio. Sin embargo, algunas neuronas pueden “morir” durante el entrenamiento. Si el gradiente mueve los pesos tal que la neurona no se activa para ninguno de los ejemplos de entrenamiento, entonces el gradiente siempre será cero para esa neurona y nunca se activará. A veces pueden morir hasta 40% de las neuronas si el índice de aprendizaje es muy alto. Este problema se puede reducir con un ajuste adecuado de la tasa de aprendizaje o usando algunas de las siguientes variaciones de esta función:
ln1 >0 0.01 max(0, 0,) max ,
o
Función Softplus
o
Leaky ReLUs
es una versión aproximada y continua de ReLU.
permiten tener un gradiente pequeño (no cero) cuando la neurona no está
activa, usada en reconocimiento de voz. o
Noisy ReLUs
Neurona Maxout
usadas en máquinas de Boltzmann restringidas
(Goodfeloow et al. 2013). Es una generalización de las funciones ReLU y Leaky
ReLU que tiene las ventajas de ReLU (lineal, no saturación), pero sin el problema de la muerte de neuronas. Sin embargo, puede aumentar el número de parámetros al doble.
…Qué más?
¿Qué función debería usar? Use ReLU, elija una tasa de aprendizaje adecuada y monitoree la fracción de neuronas muertas. Si cree podría tener mejores resultados, intente con Leaky ReLu o Maxout. Nunca use la sigmoide logística. Puede intentarlo con tanh, pero espere peores resultados que con ReLU/Maxout.
Agrupamiento (pooling) Problema: Los mapas de rasgos ya generados podrían usarse para clasificar las imágenes, pero demandaría aún mucho procesamiento y sería propenso al sobreajuste
100 × 100 8× 8 100 8 1 × 100 8 1 400 × 8649 3,429,600
(overfitting). Por ejemplo, si tuviéramos una imagen de
pixeles y 400 filtros de
en
una capa convolucional, entonces tendríamos 400 mapas con
8649
rasgos que en total serían
rasgos utilizados para la clasificación. Lo
cual es demasiado grande, así que se desea reducir el total de rasgos. Algunas soluciones son:
Sub-muestrear los mapas de rasgos
Extraer algunas estadísticas de los mapas de rasgos (agrupamiento o pooling)
El agrupamiento extrae estadísticas como el promedio o el máximo de una región fija del mapa de rasgos. Esto reduce el número de rasgos usados para la clasificación y reduce el problema del sobreajuste. Adicionalmente, si la región de agrupamiento es contigua, entonces los rasgos agrupados presentaran cierta invarianza la traslación del patrón a reconocer. Es decir, el rasgo agrupado se activará si el patrón a reconocer no se sale de la región de agrupamiento que le corresponde. Cabe mencionar el agrupamiento divide el mapa de rasgos en regiones disjuntas (sin traslape). Por otro lado, varias capas de agrupamiento hacen que se pierda la información de la localización del rasgo, provocando que por ejemplo se pueda reconocer rostros, pero no de quien pertenece.
3 “La Tecnología y la Ciencia en beneficio de los Mexicanos” “Por nuestra Independencia Intelectual”
[REDES NEURONALES CONVOLUCIONALES]
Dr. Erik Zamora
Aprendizaje Supervisado (también hay versión no supervisada) Descenso por gradiente estocástico. En principio, se puede usar cualquier método de optimización para entrenar las redes convolucionales, pero se prefiere el método del descenso por gradiente estocástico. Este método calcula el gradiente de la función objetivo
, : ∇ (;,)
respecto a los parámetros
para un subconjunto de los ejemplos de entrenamiento
aleatoriamente en cada iteración, de tal manera que los parámetros son ajustados por:
donde es el índice de aprendizaje,
es la matriz de pesos sinápticos y
(,)
escogidos
es el vector de polariza ciones.
Estrategias adicionales (buenas prácticas) . Al aplicar este método se suele seguir las siguientes estrategias: 1.
Subconjuntos de ejemplos: se elige calcular el gradiente promedio a partir de un subconjunto de ejemplos en lugar de un
solo ejemplo porque: 1) se reduce la varianza en la actualización de los parámetros, llevando una convergencia más estable; y 2) permite el uso de métodos numéricos altamente optimizados para procesar matrices. El tamaño del subconjunto comúnmente es de 256 ejemplos, pero puede ser cambiado de aplicación en aplicación. 2.
Aleatoriedad: Los ejemplos deben ser elegidos aleatoriamente para evitar introducir sesgo en el gradiente que provoque
una pobre convergencia hacia la optimalidad. 3.
Adaptación del índice de aprendizaje : elegir un índice de aprendizaje y determinar su evolución adecuada puede ser algo
complicado. Algunas heurísticas que se siguen son: a.
Fijar el índice inicial tal que la convergencia en la(s) primera(s) época(s) sea estable y disminuir a la mitad su valor conforme la convergencia avanza.
b.
Cambiar el índice de aprendizaje tal que entre épocas la función de objetivo (error) cambie por debajo de cierta cantidad umbral evaluándola con subconjunto de ejemplos.
c.
Cambiar el índice de aprendizaje mediante
+
donde a y b son parámetros para enfriar (disminuir) la
intensidad del aprendizaje conforme las iteraciones avanzan. 4.
Momento: cuando la función objetivo tiene valles angostos y largos, el descenso por
gradiente puede oscilar entre las paredes del valle y converger muy lentamente hacia el óptimo local (Las funciones objetivo de las redes profundas tienen esta forma cerca del minimo local). En esta situación es conveniente usar la estrategia del momento, la cual aumentará el tamaño del paso de búsqueda si el gradiente mantiene la misma dirección entre iteraciones, y disminuirá el paso de búsqueda si el gradiente está cambiando de dirección consistentemente. Esto acelerará la convergencia y suavizará los cambios de dirección del gradiente. La actualización de los parámetros con momento es dada por:
Donde es vector de velocidad de
: ∇ (;,) : ∈ 0,1] y
regula cuantas iteraciones de los gradientes previos son considerados para
la actualización de los parámetros. Generalmente, es fijado a 0.5 hasta que el aprendizaje inicial se estabiliza y entonces se incrementa a 0.9 o más para aumentar el efecto del momento.
4 “La Tecnología y la Ciencia en beneficio de los Mexicanos” “Por nuestra Independencia Intelectual”
[REDES NEURONALES CONVOLUCIONALES] 5.
Pre-procesamiento.
Dr. Erik Zamora
Con el fin de mejorar el aprendizaje, se suele usar tres formas para pre-procesar los datos de
entrenamiento: a.
Sustracción de la media. Se trata de quitar el valor medio de los datos y
dejarlo en el origen. b.
Normalización. Cada dimensión de los datos se transforma a una misma
escala. Hay dos formas: 1) dividiendo los datos entre sus desviaciones estándar; y 2) dividiendo por sus máximos y mínimos para dejarlos entre -1 y 1. c.
PCA y Blanqueado . El análisis de componentes principales (PCA) reduce las
dimensiones de los datos, quedándose con las dimensiones con mayor varianza. El blanqueado normaliza la escala dividiendo cada dimensión de los datos en su base propia por su valor propio. El resultado es que si los datos se distribuían como una gaussiana multivariable, entonces los datos blanqueados serán gaussianos con media cero y con matriz de covarianza igual a la identidad. Las trasformaciones PCA y blanqueado son poco usadas en las redes convolucionales. Sin embargo, centrar y normalizar los datos es muy importante porque mejoran el aprendizaje en las redes convolucionales. 6.
Inicialización
a.
Pesos. Nunca inicialice todos los pesos al mismo valor, especialmente, a cero; porque el gradiente sería el mismo,
actualizando siempre los pesos al mismo valor. En su lugar, inicialice los p esos en valores pequeños cercanos a cero de manera aleatoria dentro de una ventada Donde
rand
[,] 2rand 1 ,
genera números aleatorios con dist. uniforme para
entradas en la neurona . Recientemente (He et
al. 2015 “Delving Deep into Rectifiers…”), para redes profundas, se ha mostrado que la convergencia se puede mejorar siguiendo una distribución gaussiana con media cero y una varianza normalizada con el número de entradas: b.
randn√ 2/
Polarizaciones. Aquí es posible inicializar todas las polarizaciones igual a cero, ya que la asimetría de gradientes la
proporcionan los pesos aleatorios. Para las redes con ReLUs, algunas personas prefieren usar un pequeña constante positiva e.g. 0.01 para todas las polarizaciones y así asegurar que las unidades ReLUs disparen al inicio. Sin embargo, no es claro si e sto mejora la convergencia o no. 7.
Regularización. Son una serie de métodos para reducir el sobreajuste del modelo a los datos durante el aprendizaje.
a.
Regularización L2. Penaliza la magnitud de todos los parámetros mediante añadir
en la función objetivo,
donde es la intensidad de la regularización. Tiene el efecto de preferir pesos distribuidos más difusamente.
||
b.
Regularización L1. Hace lo mismo que la anterior, pero añadiendo
c.
Norma máxima. Se limita a la norma de los vectores de pesos a tener un
valor máximo
‖⃗‖ <
.
. Los valore típicos para son del orden de 3 o 4.
Una ventaja es que se evita que el entrenamiento se vuelva inestable tomando parámetros cada vez más grandes. d.
Dropout (Apagado Aleatorio). Este altamente efectivo, simple y fue
recientemente introducido por Srivastava et al. 2014 “Dropout: a simple way…” para complementar los métodos anteriores. Durante el entrenamiento, algunas neuronas son mantenidas activas con una probabilidad
y las otras son apagadas a cero. En consecuencia, solo los pesos de las neuronas
activas son actualizados, acelerando el aprendizaje y reduciendo el sobreajuste. Durante la evaluación de la red, no aplica el apagado aleatorio. Actualmente, hay mucha investigación acerca de este método y sus variantes. e.
Otros métodos aleatorios. En la misma dirección que el dropout, se encuentra: 1)DropConnect, donde un
conjunto aleatorio de pesos son puestos a cero durante el paso adelante del entrenamiento, 2) agrupamiento (pooling) estocástico, 3) agrupamiento fraccional, o 4) aumento de los datos.
5 “La Tecnología y la Ciencia en beneficio de los Mexicanos” “Por nuestra Independencia Intelectual”
[REDES NEURONALES CONVOLUCIONALES]
Dr. Erik Zamora
f.
Regularización de polarizaciones. No hay necesidad de regularizar las polarizaciones porque no son factores multiplicativos, solo son términos aditivos. Sin embargo, si se hace no empeora el desempeño del aprendizaje; así algunos regularizan las polarizaciones. En la práctica, lo más usado es la regularización L2 cuya intensidad es ajustada con los da tos de validación. También es común combinar esto con el dropout aplicado después de todas las capas (el valor p=0.5 es usado comúnmente, pero también puede ser ajustado con los datos de validación).
Retro-propagación. El cálculo del gradiente requiere retro-propagar el error de la última capa hacia las capas anteriores. Para
una capa con conexión completa con la capa
1
+ ∙ ′ ∇ ,;, ++ ∇ ,;, , el error
y los gradientes son
Donde
′()
es la derivada de las funciones de activación y
para la capa es retropropagado por
es la salida de capa (
es la imagen de entrada).
Si la capa es una capa convolucional y de agrupamiento, el error es retro-propagado por
upsample()+ ∙ ′()
donde indica el filtro. La función
upsample
debe calcular el error a través de la capa de agrupamiento para cada unidad que entra
en ella. Para el agrupamiento por promedio,
upsample
distribuye uniformemente el error de una única unidad de agrupamiento
entre las unidades que la alimentan de la capa anterior. Para el agrupamiento por máximo, la unidad que fue escogida como máximo de la capa anterior recibe todo el error. Finalmente, los gradientes respecto los mapas de rasgos están dados por
∇ ,;, ( ) ∗ rot90(+ ,2 ) = ∇ ,;, ( + ), , Donde la operación
∗ +
rota la matriz A 90 grados
es la convolución valida entre la entrada de la capa
veces en el sentido de la s manecillas del reloj.
y el error del filtro . La función
rot90 ,
Función Objetivo. La función objetivo se puede dividir en dos partes: la regularización que penaliza la complejidad del modelo y el error de predicción que penaliza el error entre la predicción y la respuesta que debería ser. El error de predicción promedio de los errores
de cada ejemplo individual del
ejemplos. Usted debe elegir una forma adecuada para tabla lo resumimos.
Nombre Norma L2 Norma L1
Expresión Matemática
‖‖ ‖‖
es el
entrenamiento, esto es, ∑ donde es número total
de
dependiendo del tipo de problema que este resolviendo. En la siguiente
¿Para qué sirve? Regresión
Descripción Acumula el error cuando la diferencia es distinta a cero.
6 “La Tecnología y la Ciencia en beneficio de los Mexicanos” “Por nuestra Independencia Intelectual”
[REDES NEURONALES CONVOLUCIONALES] SVM Multiclase
Clasificador Softmax (entropía cruzada)
Softmax Jerárquico
≠ max(0, 1)
Clasificación excluyente
log∑
Clasificación excluyente
(Mikolov et al. 2013)
max(0,1 ) log( ) (1 )log1 ( )
Regresión logística binaria Donde es el ejemplo y es la dimensión de la predicción.
Clasificación de un gran número de clases. Clasificación no excluyente
Clasificación no excluyente
Dr. Erik Zamora
Acumula los errores cuando la diferencia entre la clase correcta y las clases incorrectas <1. Las salidas son consideradas como puntaje para cada clase. Penaliza la diferencia entre la distribución verdadera y la distribución estimada por las salidas. Las salidas son probabilidades de que la entrada pertenezca a las clases (si se normalizan). Descompone las etiquetas en un árbol, representándolas por camino en un árbol Donde . El error se acumula cuando un ejemplo positivo tiene una puntuación menor a +1 o cuando un ejemplo negativo tiene una puntuación mayor a -1. Se usa un clasificador de regresión logística para cada clase de manera independiente.
∈ {1,1}
Nota: En la práctica, es más difícil de optimizar un problema de regresión que uno de clasificación. Si está resolviendo una regresión, primero piense si es realmente es necesario interpretarlo como problema de regresión. Quizá sea mejor discretizar sus salidas en grupos y resolverlo como un problema de clasificación excluyente.
7 “La Tecnología y la Ciencia en beneficio de los Mexicanos” “Por nuestra Independencia Intelectual”
[REDES NEURONALES CONVOLUCIONALES]
Dr. Erik Zamora
Librerías
Caffe (C++ con interfaces para Matlab y Python) Es la más popular http://caffe.berkeleyvision.org/
Torch (C y Lua) usado por Facebook Research, Google Deepmind y Twitter http://torch.ch/docs/cvpr15.html
Theano (Python) http://deeplearning.net/software/theano/
MatConvnet (Matlab) http://www.vlfeat.org/matconvnet/
Cuda-convnet (CUDA) https://code.google.com/p/cuda-convnet2/
Deepleaning4j (Java) http://deeplearning4j.org/
A Modern Computer Vision Library - ConvNet: Deep Convolutional Networks http://libccv.org/doc/doc-convnet/
Deep Learning Libraries by Language http://www.teglor.com/b/deep-learning-libraries-language-cm569/
Demostración en Matlab
……
T2: Redes Neuronales Convolucionales Fecha de Entrega: Realice el ejercicio propuesto
en el tutorial
V011215
http://ufldl.stanford.edu/tutorial/supervised/ExerciseConvolutionAndPooling/. El
ejercicio pide completar el código solo en los archivos cnnConvolve.m and cnnPool.m. Para verificar si lo ha hecho bien, deberá correr el código cnnExercise.m. Si lo completo bien, verá el siguiente mensaje
Congratulations! Your convolution code passed the test. Congratulations! Your pooling code passed the test. Envié en un único archivo ZIP los dos arcihvos c nnConvolve.m and cnnPool.m al correo
[email protected] antes o durante de la fecha de entrega. Nota: Tiene que bajar el código completo del tutorial desde https://github.com/amaas/stanford_dl_ex; y bajar la base de datos MNIST: train-images.idx3-ubyte desde http://yann.lecun.com/exdb/mnist/ para guardarla en la carpeta “…/stanford_dl_exmaster/common/”.
8 “La Tecnología y la Ciencia en beneficio de los Mexicanos” “Por nuestra Independencia Intelectual”