3.4 Redes Neuronales Convolutivas (CNN)
3.4.1 La operación de convolución
En la capa de convolución se utilizan filtros, los filtros son esencialmente detectores de características, entonces, se toma un filtro y se multiplica sobre el área entera de una imagen de entrada, y el resultado sera un elemento o una neurona del mapa de características que se forma (Figura 3.4).
Figura 3.4: Representación de los filtros y el mapa de características como neuronas en una capa convolucional (Buduma, 2016a).
Por lo tanto, dado una imagen de dos dimensionesI como entrada, y un filtro también de dos dimensionesk, la operación de la convolución esta dada por (Ecuación 3.1):
(3.1) S(i,j)=(I∗K)(i,j)=X m
X
n
I(m,n)K(i−m,j−n)
En el contexto del aprendizaje automático, el algoritmo debe de aprender los valores apropiados para la matriz K, en la figura 3.5, se puede observar, la operación de una convolución, en el que se tiene una entrada de dos dimensiones, y un filtro también de dos dimensiones.
Entonces, una convolución toma un volumen de entrada, este volumen tiene las siguientes características:
Figura 3.5: Operación de convolución (Bengio et al., 2015).
• Su ancho win. • Su altohin.
• Su profundidaddin. • Su paddingP.
Este volumen es procesado por un total dek filtros, que representan los pesos y las conexiones en una red convolucional, además, estos filtros tienen algunos parámetros que se describen a continuación:
• La variablee, que es igual ancho y alto de los filtros.
• El saltos, o la distancia entre los resultados consecutivos del producto del filtro y una sección del volumen de entrada,
• El sesgob, es el parámetro de aprendizaje, que se añade a cada componente de la convolución.
En resultado de aplicar los filtros, resulta una salida con las siguientes características:
• La función f que se aplica a la entrada de cada neurona en el volumen de salida, para determinar su valor final.
• El nuevo anchowout=
h
win−e+2p
s
i
+1
• La nueva altura hout=hhin−e+2p
s
i
• La profundidad dout=k
3.4.2
Max Pooling
Para reducir la dimensionalidad del mapa de características resultado de las convolucio- nes, se utiliza la capa de pooling, la idea esencial detrás de la capa de pooling es dividir el mapa de características en porciones de igual tamaño, entonces, de cada porción se seleccionara un elemento que la represente, en el caso de Max Pooling, se selecciona el máximo de los elementos (Figura 3.6, 3.7).
Figura 3.6: Max Pooling vista como neuronas (Bengio et al., 2015).
Después de obtener las características utilizando la capa de convolución, la capa de pooling sustituye a la salida de la convolución en un determinado lugar con un resumen estadístico de las salidas cercanas.
En la figura 3.8 se puede observar una red convolucional, con sus capas de convolución y pooling respectivamente.
Figura 3.7: Max Pooling vista matricial (Buduma, 2016a).
Figura 3.8: Ejemplo de una red convolucional (Strigl et al., 2010).
3.4.3
Entrenamiento
3.4.3.1 Propagación hacia adelante
La red neuronal convolucional como se ha visto anteriormente tiene 3 tipos de capas, la propagación hacia adelante o hacia atrás sera diferente dependiendo en que capa se este haciendo la propagación.
Capa de convolución
Tomando en cuenta que se tiene alguna entrada de neuronas de N×N, y se tiene un filtrowde m×m, la salida de la capa de convolución aplicando el filtro sera de tamaño (N−m+1)×(N−m+1), entonces un elemento de la capa de salidaxli j se calcularía de la siguiente manera (Ecuación 3.2)
(3.2) xli j= m−1 X a=0 m−1 X b=0 waby(li−+1a)(j+b)
(3.3) yli j=σ(xli j) Capa de pooling
En la capa de pooling simplemente se toma una región de tamaño k×kde la salida obtenida en la capa de convolución, entonces, si dicha salida tenía un tamaño deN×N, la salida aplicando pooling será de tamaño Nk×Nk, cada bloque dek×kse reduce justamente aplicando alguna función de pooling.
3.4.3.2 Propagación hacia atrás Capa de convolución
Se asume que se tiene alguna función de errorE, mediante el cual se conoce el error en la capa de convolución, entonces, lo que se quiere es calcular el error en la capa anterior, y cual es la gradiente para cada peso en la capa de convolución.
Entonces el error que se conoce y que se necesita calcular para la capa anterior es igual a la deriva parcial con respecto a cada neurona de la capa de salida
µ ∂E ∂yl i j ¶ , antes de calcular esto, se debe calcular la gradiente de cada peso, aplicando la regla de la cadena, se tendría lo siguiente (Ecuación 3.4):
(3.4) ∂E ∂wab= N−m X i=0 N−m X j=0 ∂E ∂xl i j ∂xli j ∂wab = N−m X i=0 N−m X j=0 ∂E ∂xl i j y(li−1+a)(j+b)
Se debe de sumar sobre todas las expresiones xli j en las cualeswabinterviene (esto debido a los pesos compartidos en esta capa), de acuerdo a la propagación hacia adelante se sabe que ∂x l i j ∂wab =y l−1 (i+a)(j+b).
Entonces se necesita saber el valor de ∂E
∂xli j (a los cuales a menudo se les llama "d el tas"), y nuevamente aplicando la regla de la cadena se tiene (Ecuación 3.5):
(3.5) ∂E ∂xli j = ∂E ∂yli j ∂yl i j ∂xli j = ∂E ∂yli j ∂ ∂xli j ³ σ(xli j)´= ∂E ∂yli jσ 0(xl i j)
Como se puede apreciar, ya se conoce el error en capa actual ∂E
∂yli j, se puede calcular fácilmente losd el tas ∂E
∂xli j en la capa actual justamente derivando la función de activación
σ0(x).
Finalmente se puede calcular los pesos, propagando el error hacia atrás, o hacia la capa anterior, y nuevamente utilizando la regla de la cadena se tiene (Ecuación 3.6):
(3.6) ∂E ∂yli j−1= m−1 X a=0 m−1 X b=0 ∂E ∂xl (i−a)(j−b) ∂xl (i−a)(j−b) ∂yi jl−1 = m−1 X a=0 m−1 X b=0 ∂E ∂xl (i−a)(j−b) wab
3.5
Aprendizaje no Supervisado
En el aprendizaje no supervisado no se tienen instancias etiquetadas, es decir que se tiene un conjunto de datos, en la cual no existe ninguna clase, lo que se trata de hacer es un agrupamiento de estos datos para encontrar o descubrir dichas clases.
3.5.1
Auto-codificadores
Los auto-codificadores pertenecen a una clase de algoritmos de aprendizaje conocidos como aprendizaje no supervisado. A diferencia de los algoritmos supervisadas, los algoritmos de aprendizaje sin supervisión no necesitan información de la etiqueta para los datos. En otras palabras, nuestros datos sólo tienen dex(i), pero no tienen los y(i), que vendrían a ser la etiquetas de los datos (Le et al., 2015; Ng et al., 2016). Un auto-codificador es una técnica muy utilizada en el aprendizaje no supervisado, aunque también haya sido utilizada de distintas maneras y con distintos objetivos.
3.5.1.1 Compresión de data
En (Le et al., 2015), se considera el siguiente ejemplo, se desea desarrollar un programa para enviar algunos datos del teléfono móvil a la nube. Para limitar el uso de la red, se debe optimizar cadabitde datos que vamos a enviar. Los datos son una colección de puntos, cada uno tiene dos dimensiones, como se ve en la Figura 3.9
Figura 3.9: Puntos en un plano 2d. Figura adaptada de (Le et al., 2015).
En la Figura 3.9, las cruces rojas son los puntos de datos, el eje horizontal es el valor de la primera dimensión y el eje vertical es el valor de la segunda dimensión. Tras la visualización, notamos que el valor de la segunda dimensión es aproximadamente el doble que de la primera dimensión. Teniendo en cuenta esta observación, se puede enviar sólo la primera dimensión de cada punto de datos a la nube. Luego, en la nube, solo se necesita calcular el valor de la segunda dimensión, duplicando el valor de la primera dimensión. La compresión es con perdida, pero reduce el tráfico de red en un 50 %. Ya que el tráfico de red es lo que tratamos de optimizar, esta idea parece razonable (Le et al., 2015).
El objetivo de los auto-codificadores es poder resolver el ejemplo anterior de manera sistemática. Formalmente, suponemos que tenemos un conjunto de puntos de datos {x(1),x(2), ...,x(m)}, donde cada punto de datos tiene varias dimensiones. La pregunta es si hay una manera general de asignarlos a algún conjuntos de datos {z(1),z(2), ...,z(m)}, donde ztiene una dimensión menor axy los z(i) pueden fielmente reconstruir las x(i). Para responder a esto, se nota que en el ejemplo anterior, para enviar datos desde el teléfono celular a la nube, tiene tres pasos:
• Codificación: Desde el celular. se asigna la datax(i) comprimida az(i). • Envío: Se envía z(i) a la nube.
• Decodificación: En la nube, se asigna desde la data comprimidaz(i) a ˜x(i), que es una aproximación dex(i).
Para asignar los datos de un lado a otro de manera sistemática, definimos que zy ˜x son funciones de entrada, de la siguiente manera:
(3.7) z(i)=W1x(i)+b1
(3.8) x˜(i)=W1z(i)+b1
Figura 3.10: Arquitectura de auto-codificador no lineal. Figura adaptada de (Le et al., 2015).
Si x(i) es un vector de dos dimensiones, puede ser posible visualizar los datos para encontrarW1,W2,b1,b2analíticamente, dondeW1,W2 son matrices bidimensionales de pesos yb1,b2son el componentebias. En casos prácticos, es difícil encontrar esas matrices usando la visualización, por lo que es necesario utilizar el gradiente descendente (Bottou, 2012). La meta es tener un ˜x(i) aproximado a x(i), para esto se establece la siguiente función objetivo, que es la suma de diferencia de cuadrados entre ˜x(i) y x(i):
(3.9) J(W1,b1,W2,b2)= m X i=1 ( ˜x(i)−x(i) )2 = m X i=1 (W2z(i)+b2−x(i) )2 = m X i 1 (W2(W1x(i)+b1) +b2−x(i) )2
En la Figura 3.10, Se observa como se trata de comprimir datos de 4 dimensiones a 2 dimensiones utilizando una red neuronal con una capa oculta. La función de activación de la capa oculta es no lineal. Si los datos fueran altamente no lineales, se podría añadir más capas ocultas a la red para tener un auto-codificador profundo.
3.6
Consideraciones Finales
En este capítulo fue presentada una visión general sobre minería de datos ydeep learning, destacando los conceptos y aplicaciones que son de interés para este trabajo. En específico, fueron discutidas técnicas de aprendizaje supervisado y no supervisado basado en redes neuronales artificiales con énfasis en arquitecturas CNN y autocodificadores.
A pesar de las recientes investigaciones en métodos de clasificación, las redes neu- ronales basados en arquitecturas CNN pueden ser la mejor opción en muchos dominios de aplicación debido a su eficiencia en precisión y escalabilidad. En problemas de gran escala con grandes volúmenes de datos las técnicas de aprendizaje profundo, se muestran más adecuadas conforme el número de ejemplos por clases crece. Además, para tareas de procesamiento y clasificación de los datos ahora se puede usar el alto rendimiento de las GPUs.
C A P Í T
4
TEORÍA
FRACTAL
Este capítulo describe un estudio sobre Teoría Fractal y su aplicación al análisis de datos.
4.1
Consideraciones Iniciales
E
l desarrollo de sistemas informáticos ha generado la necesidad del almace- namiento y procesamiento de tipos de datos complejos, tales como imágenes, vídeos, audio, datos biomédicos, hipertexto, etcétera. Estos datos son típicamen- te voluminosos y con alta dimensionalidad. La mayoría de los enfoques utilizados en las técnicas mineras se basan en algoritmos con una complejidad computacional alta, tanto en el número de muestras como en el número de atributos (dimensiones) del conjunto de datos (Zurada and Kantardzic, 2005).Un reto para la nueva generación de técnicas de minería de datos es descubrir hechos interesantes utilizando algoritmos escalables, es decir, algoritmos lineales o sublineales al menos tanto en el número de elementos como en el número de atributos del conjunto de datos. Por lo tanto, los investigadores de base de datos se esfuerzan en técnicas rápidas para la reducción de la dimensionalidad, el agrupamiento y la clasificación, así como las operaciones de indexación y recuperación asociados con otros procesos de minería de datos.
Este capítulo aborda estos temas, específicamente el uso de la dimensionalidad intrínseca (o fractal) al análisis de los conjuntos de datos. Las técnicas basadas en fractales se adaptan bien a una muestra inicial de un conjuntos de datos, desde donde se pueden ejecutar analizadores más específicos y costosos. Además, las técnicas fractales tienden a seguir la percepción humana natural de las características del conjunto de datos mejor que la definición geométrica de los datos (Jr. et al., 2010a).
En este capítulo presentamos los principales conceptos relacionados con la teoría fractal que son usados en algunos de los métodos propuestos en esta tesis. Presentamos un estudio de varias técnicas de análisis basadas en un conjunto de gráficos obtenidos a partir de conjuntos de datos mediante algoritmos de complejidad lineal basados en la teoría de fractales. Los gráficos proporcionan estimaciones sobre características significativas, tales como la dimensionalidad intrínseca y la correlación del conjunto de datos.
4.2
Fractales
Un fractal es definido como un objeto que presenta aproximadamente las mismas caracte- rísticas independientemente de la escala donde es analizada, es un objeto que se parece a si mismo. Por otro lado, las partes del fractal son similares, exactas o estadísticamente al fractal completo. Esto es, a una escala mejor los detalles son similar a las características de una escala mayor (Schroeder, 1991; Zurada and Kantardzic, 2005).
Por ejemplo, el trianguloSierpinkskies un fractal geométrico, que ha sido construido en un proceso iterativo, teóricamente infinito. En un triangulo equilátero ABC, donde primero se ha removido el triangulo central A’, B’, C’, de cada uno de los tres triángulos restantes cuyos lados longitud igual a la mitad del lado de ABC, retiramos de nuevo el triángulo central. La figura 4.1 muestra los pasos iniciales del proceso de construcción de un triángulo deS ier pinski. El triángulo restante tiene “agujeros” independientes de la escala y cada triángulo dentro de la primera es una “miniatura” de todo el triángulo.
Figura 4.1: Pasos del proceso de construcción del triangulo deS ier pinsk y(Zurada and Kantardzic, 2005).
de K och, el conjunto de Cantory el conjunto de Mand elbrot que son presentados en la figura 4.2. Son también ejemplos de fractales en la naturaleza, por ejemplo: nubes, montañas, hortalizas, árboles, La costa de continentes, islas entre otros.
Figura 4.2: Algunos ejemplos de fractales (a y b) fractales geométricos y (c) fractales algebraicos (Zurada and Kantardzic, 2005).