Você está na página 1de 8

[REDES NEURONALES CONVOLUCIONALES] Dr.

Erik Zamora

Enfocado: a ensear los principios bsicos 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 estocstico
Arquitectura o Estrategias adicionales
o Convolucin o Retro-propagacin
o No-linealidades o Funcin Objetivo
o Agrupamiento (Pooling) Libreras
Demostracin en Matlab
Tarea

Para qu sirve?

Red Neuronal Convolucional: Esta red es diseada especialmente para procesar datos estructurados en 2D como imgenes o
seales de voz presentadas en espectrogramas. Sin embargo, se pueden adaptar para procesar datos en arreglos multidimensionales
de 1D, 3D o ms. Su principal ventaja es que tiene menos parmetros a entrenar que una red multicapa con conexin total del
mismo nmero de capas ocultas, por lo que su entrenamiento es ms rpido. Adems, presenta invarianza a la traslacin de los
patrones a identificar.

Aplicaciones comerciales:
LeNet: Lectura de cheques automtico usado en U.SA. y Europa en los 90s en un DSP por AT&T (video http://ow.ly/SCpir
LeCun 98, Gradient-based learning)
Reconocimiento de nmeros y letras manuscritas incluyendo caracteres arbigos y chinos por Microsoft (Abdulkader 06,
Chellapilla & Simardvideos 06, http://ow.ly/SCtEX, http://ow.ly/SCri0 )
Deteccin y borrado automtico de rostros y placas vehiculares para proteccin de la privacidad en Google Street View
(Frome et al. 09, Large-scale Privacy Protection)
Identificacin del gnero y la edad de los usuarios de mquinas expendedoras por la empresa NEC Labs en Japn
(http://ow.ly/SCKhe)
Deteccin y seguimiento de clientes en supermercados por NEC Labs (Fan et al. 10, Human Tracking using video
http://ow.ly/SFqFs )
Deteccin de intrusos y ladrones por la empresa AgilityVideo (http://www.agilityvideo.com/)
Aplicaciones experimentales:
Deteccin de rostros con record en velocidad y precisin (Nasse et al. 09 Face Detection using GPU)
Identificacin de expresiones faciales (video http://ow.ly/SCMyB Kahou et al. 13, Combining modality)
Evasin de obstculos para robots mviles usando visin (video http://ow.ly/SCN0S Hassell, LeCun et al. 09)
Deteccin de obstculos a gran distancia (Hassell, LeCun et al. 09)
Segmentacin de imgenes biolgicas (Ning 08 Toward automatic phenotyping video http://ow.ly/SFqxg )
Restauracin de imgenes (eliminacin del ruido) (Jain et al. 08 Natural image denoising)
Reconstruccin de circuitos neuronales a partir de imgenes transversales del cerebro con espesor nanomtrico (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 y Miikkulainen Evolving Neural Networks.)
Robot que aprende a hacer tareas (video http://ow.ly/SP3y2 Levine et al. 2015 End-to-End Training)
1
La Tecnologa y la Ciencia en beneficio de los Mexicanos
Por nuestra Independencia Intelectual
[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 conexin total como
una red Perceptron multicapa. La entrada de una capa
convolucional es una imagen donde es
tanto la altura como el ancho de la imagen y es
nmero de canales (en RGB son 3). Las capas convolucionales tienen k filtros (o
kernels) cuyas dimensiones son donde y son elegidas por el
diseador y pueden variar de filtro en filtro. Cada filtro genera mediante
convolucin un mapa de rasgos (feature maps) de tamao + 1. Despus
cada mapa es sub-muestrada con la operacin mean pooling o max pooling
sobre regiones contiguas de tamao donde puede tomar valores desde 2
para imgenes pequeas (e.g. MNIST) y comnmente no ms de 5 para imgenes
grandes. Antes o despus del submuestreo, se aplica una funcin de activacin
sigmoidal ms un sesgo para cada mapa de rasgos. (Figura: las unidades de distintos
colores son mapas de rasgos distintos).

Convolucin. Problema: En el reconocimiento de imgenes, la conectividad total en las redes Perceptron multicapa es una
limitacin cuando el tamao de las imgenes crece. Esta red funciona bien para imgenes pequeas e.g. 20x20 pixeles, pero con
imgenes ms grandes e.g. 100x100 pixeles, el nmero de parmetros 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
estn conectadas a una regin contigua de los pixeles de entrada.
Procesamiento en paralelo (FPGA o GPU)
Redes con Convolucin (en seguida las describimos)
La convolucin es una operacin de productos y sumas entre la imagen de entrada y un
filtro (o kernel) que genera un mapa de rasgos. Los rasgos extrados corresponden a cada
posible ubicacin 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 nmero de conexiones y el nmero de
parmetros a entrenar en comparacin con una red multicapa de conexin total. Si la imagen es y hay filtros de en
una capa convolucional, entonces se generan mapas de rasgos que en total forman un arreglo de ( + 1) ( + 1)
rasgos. Cada rasgo est dado por = ( + ).
Convolucin completa: se extiende la imagen para ubicar el filtro en todos sus pixeles.
Convolucin valida: se convoluciona solo donde cabe el filtro dentro de la imagen.
2
La Tecnologa y la Ciencia en beneficio de los Mexicanos
Por nuestra Independencia Intelectual
[REDES NEURONALES CONVOLUCIONALES] Dr. Erik Zamora

No-linealidades. Despus de convolucin, se aplica a los mapas de rasgos funciones de activacin no lineales como:
1
Sigmoide Logistica () = . Actualmente, se usa muy poco est funcin porque: 1) satura la salida y mata los
1+
gradientes en la retro-propagacin, adems, 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 dinmica de zig-zag
durante el aprendizaje.
Sigmoide Hiperbolica () = tanh(). Da siempre mejores resultados que la sigmoide logstica porque es centrada en
cero. Aunque sigue presentando el problema de la saturacin y desvanecimiento del gradiente.
Sigmoide rectificada () = abs (g i tanh()) donde es un parmetro ajustable durante el aprendizaje. Se usa para el
reconocimiento de imgenes naturales y suele ir antes de una normalizacin de contraste local. Esta normalizacin forza la
competencia entre rasgos adyacentes de un mapa y entre rasgos con la misma localizacin espacial.
ReLU (Rectified linear unit) () = max(0, ) 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 saturacin
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 funcin:
o Funcin Softplus () = ln(1 + ) es una versin aproximada y continua de ReLU.
> 0
o Leaky ReLUs () = { permiten tener un gradiente pequeo (no cero) cuando la neurona no est
0.01
activa, usada en reconocimiento de voz.
o Noisy ReLUs () = max(0, + (0, ())) usadas en mquinas de Boltzmann restringidas
Neurona Maxout max(1 + 1 , 2 + 2 ) (Goodfeloow et al. 2013). Es una generalizacin de las funciones ReLU y Leaky
ReLU que tiene las ventajas de ReLU (lineal, no saturacin), pero sin el problema de la muerte de neuronas. Sin embargo,
puede aumentar el nmero de parmetros al doble.
Qu ms?

Qu funcin debera usar? Use ReLU, elija una tasa de aprendizaje adecuada y monitoree la fraccin de neuronas muertas. Si cree
podra tener mejores resultados, intente con Leaky ReLu o Maxout. Nunca use la sigmoide logstica. Puede intentarlo con tanh, pero
espere peores resultados que con ReLU/Maxout.

Agrupamiento (pooling) Problema: Los mapas de rasgos ya generados podran usarse para
clasificar las imgenes, pero demandara an mucho procesamiento y sera propenso al sobreajuste
(overfitting). Por ejemplo, si tuviramos una imagen de 100 100 pixeles y 400 filtros de 8 8 en
una capa convolucional, entonces tendramos 400 mapas con (100 8 + 1) (100 8 + 1) =
8649 rasgos que en total seran 400 8649 = 3,429,600 rasgos utilizados para la clasificacin. 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 estadsticas de los mapas de rasgos (agrupamiento o pooling)

El agrupamiento extrae estadsticas como el promedio o el mximo de una regin fija del mapa de rasgos. Esto reduce el nmero de
rasgos usados para la clasificacin y reduce el problema del sobreajuste. Adicionalmente, si la regin de agrupamiento es contigua,
entonces los rasgos agrupados presentaran cierta invarianza la traslacin del patrn a reconocer. Es decir, el rasgo agrupado se
activar si el patrn a reconocer no se sale de la regin 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
informacin de la localizacin del rasgo, provocando que por ejemplo se pueda reconocer rostros, pero no de quien pertenece.
3
La Tecnologa y la Ciencia en beneficio de los Mexicanos
Por nuestra Independencia Intelectual
[REDES NEURONALES CONVOLUCIONALES] Dr. Erik Zamora

Aprendizaje Supervisado (tambin hay versin no supervisada)

Descenso por gradiente estocstico. En principio, se puede usar cualquier mtodo de optimizacin para entrenar las redes
convolucionales, pero se prefiere el mtodo del descenso por gradiente estocstico. Este mtodo calcula el gradiente de la funcin
objetivo () respecto a los parmetros = (, ) para un subconjunto de los ejemplos de entrenamiento ( () , () ) escogidos
aleatoriamente en cada iteracin, de tal manera que los parmetros son ajustados por:
: = (; () , () )
donde es el ndice de aprendizaje, es la matriz de pesos sinpticos y es el vector de polarizaciones.

Estrategias adicionales (buenas prcticas). Al aplicar este mtodo 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 actualizacin de los parmetros, llevando una convergencia ms estable;
y 2) permite el uso de mtodos numricos altamente optimizados para procesar matrices. El tamao del subconjunto
comnmente es de 256 ejemplos, pero puede ser cambiado de aplicacin en aplicacin.

2. Aleatoriedad: Los ejemplos deben ser elegidos aleatoriamente para evitar introducir sesgo en el gradiente que provoque
una pobre convergencia hacia la optimalidad.

3. Adaptacin del ndice de aprendizaje: elegir un ndice de aprendizaje y determinar su evolucin adecuada puede ser algo
complicado. Algunas heursticas 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 funcin de objetivo (error) cambie por debajo de cierta
cantidad umbral evalundola con subconjunto de ejemplos.

c. Cambiar el ndice de aprendizaje mediante = donde a y b son parmetros para enfriar (disminuir) la
+
intensidad del aprendizaje conforme las iteraciones avanzan.

4. Momento: cuando la funcin 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 situacin es conveniente usar la estrategia del momento, la cual
aumentar el tamao del paso de bsqueda si el gradiente mantiene la misma direccin
entre iteraciones, y disminuir el paso de bsqueda si el gradiente est cambiando de
direccin consistentemente. Esto acelerar la convergencia y suavizar los cambios de
direccin del gradiente. La actualizacin de los parmetros con momento es dada por:
: = + (; () , () )
: =
Donde es vector de velocidad de y (0,1] regula cuantas iteraciones de los gradientes previos son considerados para
la actualizacin de los parmetros. Generalmente, es fijado a 0.5 hasta que el aprendizaje inicial se estabiliza y entonces
se incrementa a 0.9 o ms para aumentar el efecto del momento.

4
La Tecnologa y la Ciencia en beneficio de los Mexicanos
Por nuestra Independencia Intelectual
[REDES NEURONALES CONVOLUCIONALES] Dr. Erik Zamora

5. Pre-procesamiento. Con el fin de mejorar el aprendizaje, se suele usar tres formas para pre-procesar los datos de
entrenamiento:
a. Sustraccin de la media. Se trata de quitar el valor medio de los datos y
dejarlo en el origen.
b. Normalizacin. Cada dimensin de los datos se transforma a una misma
escala. Hay dos formas: 1) dividiendo los datos entre sus desviaciones
estndar; y 2) dividiendo por sus mximos y mnimos para dejarlos entre -1 y
1.
c. PCA y Blanqueado. El anlisis de componentes principales (PCA) reduce las
dimensiones de los datos, quedndose con las dimensiones con mayor
varianza. El blanqueado normaliza la escala dividiendo cada dimensin de los datos en su base propia por su valor
propio. El resultado es que si los datos se distribuan como una gaussiana multivariable, entonces los datos
blanqueados sern 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. Inicializacin
a. Pesos. Nunca inicialice todos los pesos al mismo valor, especialmente, a cero; porque el gradiente sera el mismo,
actualizando siempre los pesos al mismo valor. En su lugar, inicialice los pesos en valores pequeos cercanos a cero
de manera aleatoria dentro de una ventada [, ],
= (2rand( ) 1)
Donde rand genera nmeros 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 distribucin gaussiana con media cero y una varianza normalizada con el nmero de
entradas:
= randn( )2/
b. Polarizaciones. Aqu es posible inicializar todas las polarizaciones igual a cero, ya que la asimetra de gradientes la
proporcionan los pesos aleatorios. Para las redes con ReLUs, algunas personas prefieren usar un pequea
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 esto mejora la convergencia o no.
7. Regularizacin. Son una serie de mtodos para reducir el sobreajuste del modelo a los datos durante el aprendizaje.
1
a. Regularizacin L2. Penaliza la magnitud de todos los parmetros mediante aadir 2 en la funcin objetivo,
2
donde es la intensidad de la regularizacin. Tiene el efecto de preferir pesos distribuidos ms difusamente.
b. Regularizacin L1. Hace lo mismo que la anterior, pero aadiendo ||.
c. Norma mxima. Se limita a la norma de los vectores de pesos a tener un
valor mximo 2 < . Los valore tpicos para son del orden de 3 o 4.
Una ventaja es que se evita que el entrenamiento se vuelva inestable
tomando parmetros cada vez ms 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 mtodos 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 evaluacin de la red,
no aplica el apagado aleatorio. Actualmente, hay mucha investigacin acerca de este mtodo y sus variantes.
e. Otros mtodos aleatorios. En la misma direccin 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) estocstico, 3) agrupamiento fraccional, o 4) aumento de los datos.

5
La Tecnologa y la Ciencia en beneficio de los Mexicanos
Por nuestra Independencia Intelectual
[REDES NEURONALES CONVOLUCIONALES] Dr. Erik Zamora

f. Regularizacin de polarizaciones. No hay necesidad de regularizar las polarizaciones porque no son factores
multiplicativos, solo son trminos aditivos. Sin embargo, si se hace no empeora el desempeo del aprendizaje; as
algunos regularizan las polarizaciones.
En la prctica, lo ms usado es la regularizacin L2 cuya intensidad es ajustada con los datos de validacin. Tambin es
comn combinar esto con el dropout aplicado despus de todas las capas (el valor p=0.5 es usado comnmente, pero
tambin puede ser ajustado con los datos de validacin).

Retro-propagacin. El clculo del gradiente requiere retro-propagar el error de la ltima capa hacia las capas anteriores. Para
una capa con conexin completa con la capa + 1, el error para la capa es retropropagado por

= (( ) +1 ) ( )
y los gradientes son
(, ; , ) = +1 ( )
(, ; , ) = +1

Donde ( ) es la derivada de las funciones de activacin y es la salida de capa (1 es la imagen de entrada).

Si la capa es una capa convolucional y de agrupamiento, el error es retro-propagado por


= upsample (( ) +1 ) ( )

donde indica el filtro. La funcin upsample debe calcular el error a travs 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 mximo, la unidad que fue escogida como
mximo de la capa anterior recibe todo el error.

Finalmente, los gradientes respecto los mapas de rasgos estn dados por


(, ; , ) = ( ) rot90(+1 , 2 )

=1

(, ; , ) = (+1 ),

,

Donde la operacin +1 es la convolucin valida entre la entrada de la capa y el error del filtro . La funcin rot90(, )
rota la matriz A 90 grados veces en el sentido de las manecillas del reloj.

Funcin Objetivo. La funcin objetivo se puede dividir en dos partes: la regularizacin que penaliza la complejidad del modelo y
el error de prediccin que penaliza el error entre la prediccin y la respuesta que debera ser. El error de prediccin es el
1
promedio de los errores de cada ejemplo individual del entrenamiento, esto es, = donde es nmero total de

ejemplos. Usted debe elegir una forma adecuada para dependiendo del tipo de problema que este resolviendo. En la siguiente
tabla lo resumimos.

Nombre Expresin Matemtica Para qu sirve? Descripcin


Norma L2 = 22 Regresin Acumula el error cuando la diferencia
Norma L1 = 1 es distinta a cero.

6
La Tecnologa y la Ciencia en beneficio de los Mexicanos
Por nuestra Independencia Intelectual
[REDES NEURONALES CONVOLUCIONALES] Dr. Erik Zamora

SVM = max(0, + 1) Clasificacin Acumula los errores cuando la diferencia


Multiclase excluyente entre la clase correcta y las clases

incorrectas <1. Las salidas son
consideradas como puntaje para cada
clase.
Clasificador Clasificacin Penaliza la diferencia entre la
Softmax = log (
) excluyente distribucin verdadera y la distribucin

(entropa estimada por las salidas. Las salidas son
cruzada) probabilidades de que la entrada
pertenezca a las clases (si se
normalizan).
Softmax (Mikolov et al. 2013) Clasificacin de Descompone las etiquetas en un rbol,
Jerrquico un gran nmero representndolas por camino en un
de clases. rbol
= max(0, 1 ) Clasificacin no Donde {+1, 1}. El error se

excluyente acumula cuando un ejemplo positivo
tiene una puntuacin menor a +1 o
cuando un ejemplo negativo tiene una
puntuacin mayor a -1.
Regresin = log (( )) + (1 ) log (1 ( )) Clasificacin no Se usa un clasificador de regresin
logstica
excluyente logstica para cada clase de manera
binaria independiente.
Donde es el ejemplo y es la dimensin de la prediccin.

Nota: En la prctica, es ms difcil de optimizar un problema de regresin que uno de clasificacin. Si est resolviendo una regresin,
primero piense si es realmente es necesario interpretarlo como problema de regresin. Quiz sea mejor discretizar sus salidas en
grupos y resolverlo como un problema de clasificacin excluyente.

7
La Tecnologa y la Ciencia en beneficio de los Mexicanos
Por nuestra Independencia Intelectual
[REDES NEURONALES CONVOLUCIONALES] Dr. Erik Zamora

Libreras
Caffe (C++ con interfaces para Matlab y Python) Es la ms 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/

Demostracin en Matlab

T2: Redes Neuronales Convolucionales


Fecha de Entrega: V011215

Realice el ejercicio propuesto en el tutorial http://ufldl.stanford.edu/tutorial/supervised/ExerciseConvolutionAndPooling/. El


ejercicio pide completar el cdigo solo en los archivos cnnConvolve.m and cnnPool.m. Para verificar si lo ha hecho bien, deber
correr el cdigo 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 cnnConvolve.m and cnnPool.m al correo ezamora1981@gmail.com antes o durante de
la fecha de entrega.

Nota: Tiene que bajar el cdigo 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_ex-
master/common/.

8
La Tecnologa y la Ciencia en beneficio de los Mexicanos
Por nuestra Independencia Intelectual

Você também pode gostar