Anda di halaman 1dari 12

Redes Neuronales Convolucionales

Daniel Sebastian San Martn


22 de mayo de 2017

Indice
1. Introduccion 1

2. Historia 2

3. Arquitectura 4
3.1. Convolucion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2. Pooling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

4. Funciones de aprendizaje 7

5. Software 9

6. Conclusiones 11

1. Introduccion
En este trabajo se realizara una introduccion a las Redes Neuronales Convo-
lucionales. Con este tipo de redes neuronales se intenta simular a las neuronas
de la corteza visual primaria [1], esto se debe a que estan principalmente enfo-
cadas al reconocimiento de imagenes. Se basan en los perceptrones, a los que se
les anaden capas extra que realizan un preprocesado de los datos.

1
2. Historia
Antes de comenzar con la exposicion de los modelos matematicos que usan las
Redes Neuronales Convolucionales, conviene entender su motivacion y conocer
su historia.

La historia de las redes neuronales comienza en 1936 con Alan Turing. Este
fue el primero en estudiar el cerebro como una forma de ver el mundo de la
computacion. Sin embargo, los primeros teoricos que concibieron los fundamen-
tos de la computacion neuronal fueron el neurofisiologo Warren McCullock y
el matematico Walter Pitts, quienes en 1943 lanzaron una teora acerca de la
forma de trabajar de las neuronas ( Un Calculo Logico de la Inminente Idea de
la Actividad Nerviosa - Boletn de Matematica Biofsica 5: 115-133 ). Su modelo
de red neuronal se basaba en los circuitos electricos.

Seis anos despues, en 1949, Donald Held publico en su libro The Organization
of Behavior unas reglas que intentaban explicar los procesos de aprendizaje.
Su idea fue que el aprendizaje ocurra cuando ciertos cambios en una neurona
eran activados. Tambien, intento encontrar semejanzas entre el aprendizaje y la
actividad nerviosa. Los trabajos de Hebb constituyen las bases de la Teora de
las redes neuronales.

En 1950, el psicologo conductista Karl Lashley se dio cuenta en sus ensayos


que la informacion no era almacenada de forma centralizada en el cerebro, sino
que se distribua por el.

En el verano 1956, tiene lugar en Dartmouth la primera conferencia de in-


teligencia artificial. En esta conferencia se discutio el uso potencial de los or-
denadores para simular todos los aspectos del aprendizaje o cualquier otra
caracterstica de la inteligencia y se presento la primera simulacion de una red
neuronal, sin embargo, no supieron interpretar los resultados obtenidos.

En 1957, el psicologo Frank Rosenblatt comenzo a desarrollar el perceptron


Mark I Perceptron. Se trata de la red neuronal mas antigua, hoy en da se
sigue utilizando para la identificacion de patrones. Este modelo era capaz de
generalizar, esto es, tras aprender una serie de patrones, poda reconocer otros
similares aunque no hubiesen aparecido durante el entrenamiento. Sin embargo,
tena una serie de limitaciones, por ejemplo, su incapacidad para resolver el
problema de la OR exclusiva, y en general, no era capaz de clasificar clases que
no fueran linealmente separables. En 1959, este psicologo demostro en su libro
Principios de la Neurodinamica que bajo ciertas condiciones el aprendizaje del
perceptron converga hacia un estado finito, esto se conoce como el Teorema de
Convergencia del Perceptron.

Al ano siguiente, en 1960, los ingenieros electricos Bernard Widro y Marcian


Ho desarrollaron el modelo Adaline (Adaptative Linear Elements). Esta fue la

2
primera red neuronal aplicada a un problema real, se uso para crear filtros
adaptativos que eliminasen los ecos en las llamadas telefonicas.

En 1969, las redes neuronales estuvieron a punto de desaparecer. Esto fue


debido a que los cientficos de la computacion Marvin Minsky y Seymour Papert
probaron matematicamente que el perceptron simple era incapaz de resolver
problemas relativamente faciles, como puede ser el aprendizaje de una funcion
no lineal. Esto demostro que el perceptron simple no era tan util como se crea,
ya que las funciones no lineales son ampliamente utilizadas en computacion y
en problemas del mundo real.

En el ano 1974, el cientfico Paul Werbos describio en su tesis doctoral la idea


basica del algoritmo de aprendizaje de propagacion hacia atras (backpropaga-
tion). La tesis doctoral y alguna informacion complementaria puede encontrarse
en un libro publicado en 1994 por Werbos llamado The Roots of Backpropagation
[5].

En 1977, el cientfico estadounidense Stephen Grossberg junto con la cientfi-


ca Gail Carpenter desarrollo la Teora de la Resonancia Adaptada. Esta teora
es una arquitectura de red que se diferencia de todas las anteriores, ya que si-
mula otras habilidades del cerebro, como pueden ser la memoria a largo y corto
plazo.

Como ya hemos dicho, a principios de la decada de los setenta desaprarecio


practicamente todo el interes sobre las redes neuronales debido a los artculos
de Marvin Minsky y Seymour Papert. Sin embargo, en 1985 el cientfico John
Hopfield publico su libro Computacion neuronal de decisiones en problemas de
optimizacion, el cual hizo que muchos cientficos volviesen a interesarse en el
area de las redes neuronales.

A partir del ano 1986, el area de las redes neuronales ha ido evolucionando
a pasos agigantados. En la actualidad, se publican trabajos de forma constante
y cada poco tiempo aparecen nuevas aplicaciones.

3
3. Arquitectura
Como ya hemos dicho en la introduccion, el principal objetivo de las Re-
des Neuronales Convolucionales es el reconocimiento de imagenes, por ello, la
mayora de conceptos y procedimientos de los que vamos a hablar estaran des-
tinados a este fin.

Al igual que los perceptrones, las Redes Neuronales Convolucionales son re-
des multicapa, sin embargo, las hidden layers de los perceptrones tienen siempre
la misma funcionalidad, cosa que no ocurre en las redes convolucionales multica-
pa, ya que van a aparecer unas nuevas capas que se usaran para el preprocesado
de los datos usando tecnicas como la convolucion o el pooling.

En las Redes Neuronales Convolucionales, encontramos al principio unas


capas que se utilizan para la fase de extraccion de caractersticas (preprocesado),
las cuales estan compuestas por neuronas convolucionales y de pooling. Al final
de la red se encuentran aquellas neuronas que poseen los perceptrones, las cuales
realizan la clasificacion final sobre las caractersticas que se han extraido, mas
adelante, veremos que en la mayora de los casos la conectividad de las neuronas
que estan en la fase de extraccion no es total.

Figura 1: Arquitectura de la red neuronal convolucional. Figura: [12]

En la fase de extraccion de caractersticas (preprocesado) se intenta simular


el proceso de estimulacion de las celulas de la corteza visual. Esta fase se com-
pone de capas alternas de neuronas convolucionales y neuronas de pooling. La
finalidad de esta fase es disminuir la dimension de los datos, cabe destacar que
a medida que avanza el proceso, las neuronas son cada vez menos sensibles a las
perturbaciones de los datos de entrada, pero al mismo tiempo estan activando
caractersticas cada vez mas complejas.

Las capas de la fase de extraccion tienen una entrada de dimension m


m r donde m es tanto la altura como el ancho de la imagen (normalmente se
utilizan imagenes cuadradas) y r es el numero de canales de color (por ejemplo,
en RGB son 3). Las capas convolucionales tienen k filtros (o kernels), cuyas
dimensiones son n n q donde n y q son elegidos por el programador, y
pueden variar entre los distintos filtros. Cada filtro genera mediante un proceso

4
de convolucion un mapa de rasgos de tamano n m + 1. A continuacion, cada
mapa es sub - muestreado con la operacion max - pooling o mean - pooling
sobre regiones adyacentes de tamano p p donde p suele tomar valores entre 2
(para imagenes pequenas) y 5 (para imagenes grandes). Normalmente, se suele
aplicar una funcion no lineal como la sigmoide logstica, la tangente hiperbolica
o ReLU tras la el proceso de convolucion, esto se hace para volver a tener datos
no lineales, ya que el proceso de convolucion como veremos es lineal.

En los parrafos anteriores hemos estado hablando del proceso de convolucion


y del sub - muestreo o pooling, pero en que consisten estos dos procesos que
diferencian a los perceptrones de la Redes Neuronales Convolucionales ? Lo
veremos en las dos siguientes subsecciones.

3.1. Convolucion
Cuando se trabaja en el reconocimiento de imagenes, la conectividad total
entre neuronas de capas consecutivas del perception es una limitacion cuando va
creciendo el tamano de las imagenes a procesar. Las redes neuronales funcionan
correctamente cuando trabajan con imagenes pequenas (alrededor de 20 20
pixels), sin embargo, si trabajamos con imagenes algo mas grandes (100 100
pixels ) el numero de parametros a entrenar es demasiado grande, lo que hace que
el proceso de aprendizaje se realentice considerablemente. Por ello, es necesario
poder contar con alguna alternativa que agilice el proceso:

Redes con conexiones locales, permitir que las hidden layers esten sola-
mente conectadas a regiones contiguas de los pixels de la imagen.
Usar tecnicas y herramientas de procesamiento paralelo.
Redes con convolucion.

La convolucion es una operacion 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 ubicacion del filtro en la imagen original. La ventaja
que tiene esta tecnica es que cada filtro (que no es mas que una neurona) sirve
para extraer el mismo rasgo o caracterstica en cualquier parte de la imagen. Esto
permite reducir el numero de conexiones y el numero de parametros a entrenar
en comparacion con una red multicapa de conexion total. Si la dimension de la
imagen es n m y hay k filtros en una capa, entonces se generan k mapas de
rasgos con una dimension total de k (n a + 1) (m b + 1).

3.2. Pooling
Tras realizar el proceso de convolucion, podramos usar directamente los ma-
pas de rasgos para clasificar las imagenes, sin embargo, estos siguen requiriendo

5
mucho procesamiento, ademas, en estos mapas suele producirse el efecto de so-
breajuste. Por ejemplo, si tenemos una imagen de 100 100 pixels y 400 filtros
de dimension 8 8 en una de las capas convolucionales, tendramos 400 mapas
de rasgos con (100 8 + 1) (100 8 + 1) = 8649 rasgos en cada filtro, lo
que dara un total de 400 8649 = 3429600 rasgos a utilizar en el proceso de
clasificacion. Algunas soluciones que se han propuesto son:

Sub-muestrar los mapas de rasgos.

Extraer algunas estadsticas de los mapas de rasgos (agrupamiento o poo-


ling).

La finalidad del pooling es extraer estadsticas como el promedio (mean -


- pooling) o el maximo (max - pooling) de una region del mapa de rasgos.
Esta tecnica reduce de forma considerable el numero de rasgos usados en el
proceso de clasificacion y mitiga el efecto del sobreajuste. Ademas, si la region
de agrupamiento es contigua, los rasgos agrupados presentan cierta invarianza
de traslacion del patron a reconocer. Cabe desatcar, que el agrupamiento divide
el mapa de rasgos en regiones disjuntas. Por otro lado, si se aplican varias capas
de agrupamiento se pierde informacion de la localizacion del rasgo, provocando
por ejemplo, que se puedan reconocer rostros, pero no sea posible identificar a
quien pertenece. Normalmente, las tecnicas de pooling se aplican tras el proceso
de convolucion.

Figura 2: Aplicacion de la tecnica max - pooling. Figura: [7]

6
4. Funciones de aprendizaje
Una vez que se ha realizado el preprocesado de los datos, es necesario utili-
zar funciones no lineales para el aprendizaje. En esta seccion se expondran las
funciones que se emplean actualmente en la fase de clasificacion de las Redes
Neuronales Convolucionales.

Sigmoide logstica - (x) = 1+e1 x . Se trata de una funcion no lineal cuyo


conjunto imagen comprende a los numeros reales entre 0 y 1. Aunque esta
funcion es ampliamente usada en otras areas del Aprendizaje Automatico
y Minera de Datos, no se suele usar casi nunca en redes neuronales por dos
razones: la primera es que satura la salida y provoca el desvanecimiento
del gradiente y la segunda es que no pasa por el (0, 0) lo que implica que
puede producirse un efecto zig-zag durante el aprendizaje.
Saturacion y desvanecimiento del gradiente: Una propiedad
indeseable de las neuronas que implementan la funcion sigmoide es
que se saturen en alguno de los extremos (0 o 1), ya que provocaran
que el gradiente de esas regiones sea cercano a 0, basta notar que
la derivada de la funcion sigmoide es 0 (x) = (x)(1 (x)). Por
lo tanto, si el gradiente se desvanece en una region, esto producira
por la propagacion hacia atras que se desvanezca el gradiente en
el resto de regiones. Por ello, debemos de tener mucho cuidado en
la inicializacion de los pesos. Por ejemplo, si los pesos iniciales son
demasiado grandes, la mayora de las neuronas se saturaran y la red
apenas aprendera.
Tangente hiperbolica - Se trata de una funcion no lineal cuyo conjunto
imagen comprende a los numeros reales entre 1 y 1. Al igual que en la
sigmoide logstica, las neuronas que implementan la tangente hiperbolica
pueden saturarse, sin embargo, esta pasa por el (0, 0). Por lo tanto, en la
practica siempre sera preferible usar la tangente hiperbolica antes que la
sigmoide logstica. Destacar, que tanh(x) = 2 (2x) 1.
Sigmoide rectificada - f (x) = |gi tanh(x)| donde gi es un parametro
ajustable durante el aprendizaje. Normalmente se usa para el reconoci-
miento de imagenes naturales.
ReLU (Rectified Linear Unit) - f (x) = max(0, x). Actualmente
tiene una gran popularidad, sobre todo en Deep Learning ya que acelera
el proceso de aprendizaje en un factor 6 como se indica en [6] comparado
con las funciones sigmoide logstica y tangente hiperbolica, ademas evita
el problema del desvanecimiento de gradiente cuando hay muchas capas.
Esto es debido a que es lineal y no hay saturacion en la parte positiva de su
dominio. Sin embargo, algunas neuronas pueden morirdurante el proceso
de aprendizaje. Si el gradiente mueve los pesos de forma que la neurona
no se activa para ninguno de los ejemplos de entrenamiento, entonces el
gradiente sera siempre 0 para esa neurona y nunca se activara. A veces

7
pueden morir hasta un 40 % de las neuronas si el ratio de aprendizaje es
muy alto. El problema se puede reducir con un ajuste adecuado de la tasa
de aprendizaje o usando alguna variacion de la funcion ReLU:
Funcion Softplus - f (x) = ln(1 + ex ) es una version aproximada y
continua de la ReLU. Destacar, que la derivada de la funcion Softplus
es la sigmoide logstica.
Leaky ReLU -

x x>0
f (x) =
0,01 en otro caso

permite tener un gradiente pequeno (no cero) cuando la neurona no


esta activa. Se suele utilizar en programas de reconocimiento de voz.
Neurona Maxout - f (x) = max(w1t x + b1 , w2t + b2 ). Es una generaliza-
cion de las funciones ReLU y Leaky ReLU que tiene las ventajas de una
ReLU (lineal, no saturacion), pero sin el problema de la muerte de neuro-
nas. Como desventaja, puede llegar a duplicar el numero de parametros.

Ahora bien, vistas las funciones, cual debera usar ? La recomendacion es


usar siempre ReLU si el ratio de aprendizaje es adecuado y no mueren muchas
neuronas. Si se considera que con ReLU no va del todo bien, se tendra que
probar con Leaky ReLU o Maxout. Nunca se debe usar la sigmoide logstica. Con
la tangente hiperbolica se pueden obtener resultados satisfactorios, sin embargo,
los resultado siempre seran peores que con ReLU.

8
5. Software
Acompanando al trabajo, se incluye un software de reconocimiento de image-
nes en el que se usan las tecnicas descritas en las secciones anteriores. A modo
de ejemplo, la siguiente imagen es un fragmento del codigo utilizado donde se
utiliza ReLU combinado con convolucion y max - pooling.

Figura 3: Fragmento de codigo de la clase VGG16

Para elaborar el codigo he seguido los tutoriales del blog [3] y de [4]. El uso
del software es bastante sencillo, basta escribir en la terminal

python test imagenet.py image nombre imagen.png


Una vez que el software tiene la imagen, este la redimensiona a 224 224
pixels, la transforma en un array multidimensional y finalmente aplica las tecni-
cas vistas en el trabajo. Al finalizar, el software muestra la imagen junto a la
prediccion para la que se ha obtenido una mayor probabilidad. Las etiquetas
que usa Imagenet pueden encontrarse en [10]. Algunos ejemplos de la ejecucion
del software son

9
Figura 4: Ejemplo de prediccion: Killer whale con probabilidad 0.99998

Figura 5: Ejemplo de prediccion: lemon con probabilidad 0.993024

10
6. Conclusiones
Al no haberse mencionado anteriormente en el trabajo, me gustara decir
que el metodo de optimizacion que se suele emplear para las Redes Neuronales
Convolucionales es el gradiente descendente estocastico, y que como funciones
de coste se suelen utilizar normas matematicas como L1 y L2 y funciones de
parte positiva [f (x)]+ .

Por ultimo, creo que las Redes Neuronales Convolucionales van a marcar el
futuro en el campo del procesamiento y reconocimiento de imagenes. Ejemplo
de ello, son las multitudes de libreras que estan apareciendo como
Cae (C++ con interfaces para Matlab y Python) http://caffe.berkeleyvision.
org

Torch (C y Lua) usado por Facebook Research, Google Deepmind y Twit-


ter http://torch.ch
Theano (Python) http://deeplearning.net/software/theano/
MatConvnet (Matlab) http://www.vlfeat.org/matconvnet/

Cuda-convnet (CUDA) https://code.google.com/archive/p/cuda-convnet2/


Deepleaning4j (Java) https://deeplearning4j.org
TensorFlow (Python) https://www.tensorflow.org
Keras (Python) https://keras.io

11
Referencias
[1] Wikipedia, Visual Cortex, 15 de Mayo de 2017 https://en.wikipedia.
org/wiki/Visual_cortex
[2] Wikipedia, Redes neuronales convolucionales, 15 de Mayor de 2017, https:
//es.wikipedia.org/wiki/Redes_neuronales_convolucionales
[3] pyimagesearch, 15 de Mayo de 2017, http://www.pyimagesearch.com
[4] GitHub, Trained image classification models for Keras, 15 de Mayo de 2017,
https://github.com/fchollet/deep-learning-models
[5] Paul John Werbos, The Roots of Backpropagation: From Ordered Deriva-
tives to Neural Networks and Political Forecasting, John Wiley & Sons,
1994
[6] Alex Krizhevsky, Ilya Sutskever, Georey E. Hinton, ImageNet Classifica-
tion with Deep Convolutional Neural Networks, Universidad de Toronto
[7] the data science blog, An Intuitive Explanation of Convolutional Neural
Networks, 15 de Mayo de 2017, https://ujjwalkarn.me/2016/08/11/
intuitive-explanation-convnets/
[8] Damian Jorge Matich, Redes neuronales: Conceptos Basicos y Aplica-
ciones, Universidad Tecnologica Nacional Facultad Regional Rosario,
2001, https://www.frro.utn.edu.ar/repositorio/catedras/quimica/
5_anio/orientadora1/monograias/matich-redesneuronales.pdf
[9] Erik Zamora, Redes Neuronales Convolucionales, https://es.scribd.
com/doc/295974900/Redes-Neuronales-Convolucionales
[10] Imagenet Classes, https://gist.github.com/aaronpolhamus/
964a4411c0906315deb9f4a3723aac57
[11] Luis Cebrian Chulia, Reconocimiento de emociones mediante tecnicas
de aprendizaje profundo, Universidad Politecnica de Valencia, 2016,
https://riunet.upv.es/bitstream/handle/10251/69085/CEBRIN%20-%
20Reconocimiento%20de%20Emociones%20mediante%20tcnicas%20de%
20aprendizaje%20profundo.pdf?sequence=2
[12] Adit Deshpande, A Beginners Guide To Understan-
ding Convolutional Neural Networks, 2016, https://
adeshpande3.github.io/adeshpande3.github.io/A-Beginner%
27s-Guide-To-Understanding-Convolutional-Neural-Networks/
[13] Fernando Sancho Caparrini, Mapas Auto-Organizados, 2017, http://
www.cs.us.es/~fsancho/?e=76
[14] CS231n Convunational Neural Networks for Visual Recognition, http://
cs231n.github.io/neural-networks-1/

12