Universidad de los Andes
Trabajo de grado
Aprendizaje r´
apido en Redes Neuronales
Convolucionales por medio de sFFT
Autor:
Felipe
Su´
arez Colmenares
Supervisor:
Prof. Fernando
Lozano
Trabajo de grado como requisito
para obtener el t´ıtulo de Ingeniero Electr´
onico
Departamento de Ingenier´ıa El´
ectrica y Electr´
onica
iii
Agradecimientos
Agradezco profundamente a mis padres y mi hermano por acompa˜narme y soportarme en todo momento. Su compa˜n´ıa es invaluable y con ellos estar´e eternamente agradecido. Agradezco a mi asesor Fernando Lozano por su gran labor como profesor en varias ocasiones y como mentor de este proyecto. A todos mis amigos en Ingenier´ıa much´ısimas gracias por tenerme paciencia. A mis amigos de Matem´aticas les agradezco por mostrarme el valor de la amistad, por compartir conmigo su amor por el conocimiento y por su constante ambici´on de superaci´on.
v
´
Indice general
Agradecimientos III
Introducci´on 1
1. Marco Te´orico 3
1.1. Aprendizaje de M´aquinas . . . 3
1.1.1. Enfoque de Estad´ıstica . . . 3
1.1.2. Enfoque de Optimizaci´on . . . 4
1.2. Redes Neuronales . . . 5
1.2.1. Redes Convolucionales . . . 6
1.3. Transformada de Fourier . . . 7
1.3.1. Transformada Discreta de Fourier . . . 8
1.3.2. Transformada Dispersa de Fourier . . . 8
2. Metodolog´ıa 11 2.1. Algoritmo de Entrenamiento . . . 11
2.1.1. Backpropagation . . . 11
2.1.2. Convoluci´on . . . 12
3. Evaluaci´on Computacional 19 3.1. CUDA y Programaci´on Paralela . . . 20
3.2. CUFFT . . . 21
3.3. Convoluci´on . . . 22
3.3.1. Discusi´on de resultados . . . 25
3.4. Entrenamiento de redes . . . 26
3.4.1. DTD . . . 26
3.4.2. KTH . . . 27
3.4.3. Kylberg . . . 28
3.4.4. Retinopat´ıa Diab´etica . . . 29
3.4.5. STL . . . 30
3.4.6. Discusi´on de Resultados . . . 31
4. Conclusiones y trabajo futuro 33
A. Demostraci´on de los teoremas 35
vii
´
Indice de figuras
1.1. MuestraX para dos clasesY = 0,1. . . 4
1.2. Densidades marginalesFX|Y=0, FX|Y=1. . . 4
1.3. Modelo de una neurona. . . 5
1.4. Convoluci´on entre una Imagen a color y un banco deD filtros. . . 7
1.5. Lena,X, y su transformada de Fourier, log10(1 +|F(X)|). . . 8
1.6. Una imagen de lentejas,X, y su transformada de Fourier, log10(1 +|F(X)|). . . . 8
1.7. Ilustraci´on del funcionamiento de sfft. [6] . . . 9
2.1. Ilustraci´on de dos submuestras, un en dimensi´on 1 y la otra en dimensi´on 2. . . 14
2.2. Ilustraci´on de unakm´odulo suma en dimensi´on 1. . . 14
2.3. Ilustraci´on de la propuesta para efectuar convoluci´on. . . 16
3.1. Im´agenes de ejemplo de 5 clases de la base DTD. . . 20
3.2. Im´agenes de ejemplo de 5 clases de la base KTH. . . 20
3.3. Im´agenes de ejemplo de 5 clases de la base Kyleberg. . . 20
3.4. Cinco im´agenes de ejemplo de la baseDiabetic Retinopathy. . . 20
3.5. Im´agenes de ejemplo de 5 clases de la base stl. . . 20
3.6. Breve ilustraci´on de la arquitectura en una GPU y CPU. Gr´afica de desempe˜no en GFLOPs/s. [15] . . . 21
3.7. log10(CP U [ms]) . . . 23
3.8. log10(vl nnconv/fft conv) . . . 24
3.9. log10(vl nnconv/sfft conv) . . . 25
3.10. Desempe˜novl nnconv(izquierda) contrasfft conv (derecha). . . 26
3.11. Desempe˜novl nnconv(izquierda) contrasfft conv (derecha). . . 27
3.12. Desempe˜novl nnconv(izquierda) contrasfft conv (derecha). . . 27
3.13. Desempe˜novl nnconv(izquierda) contrasfft conv (derecha). . . 28
3.14. Desempe˜novl nnconv(izquierda) contrasfft conv (derecha). . . 28
3.15. Desempe˜novl nnconv(izquierda) contrasfft conv (derecha). . . 29
3.16. Desempe˜novl nnconv(izquierda) contrasfft conv (derecha). . . 29
3.17. Desempe˜novl nnconv(izquierda) contrasfft conv (derecha). . . 30
ix
´
Indice de cuadros
3.1. Bancos de datos evaluados. . . 19
3.2. Tiempo en milisegundos que le tom´o aMatlab (CUDA) realizarF(X). . . 22
3.3. Tiempo, en milisegundos, en realizarvl nnconv(X,F) en GPU. . . 23
3.4. Tiempo, en milisegundos, en realizarfft conv(X,F) en GPU. . . 24
3.5. Tiempo, en milisegundos, en realizarsfft conv(X,F) en GPU. . . 25
3.6. Red para elDTDen dimensi´on 64×64. . . 26
3.7. Red para elDTDen dimensi´on 128×128. . . 27
3.8. Red para elDTDen dimensi´on 64×64. . . 27
3.9. Red para elKTHen dimensi´on 128×128. . . 28
3.10. Red para elDTDen dimensi´on 64×64. . . 28
3.11. Red para elKylebergen dimensi´on 128×128. . . 29
3.12. Red para elDiabetic Retinopathy en dimensi´on 64×64. . . 29
3.13. Red para elDiabetic Retinopathy en dimensi´on 128×128. . . 30
1
Introducci´
on
La historia del hombre nos ubica en una ´epoca atravesada por decenas de a˜nos de crecimiento exponencial en capacidad de c´omputo al mismo tiempo que por siglos de rigurosas construcciones de conocimiento matem´atico. Esta coincidencial conjunci´on dio origen al estudio sobre el aprendi-zaje de m´aquinas e inteligencia artificial desde hace casi cuarenta a˜nos. Desde entonces, el hombre ha sido capaz combinar el soporte te´orico pertinente con t´ecnicas avanzadas de dise˜no para desa-rrollar dispositivos con capacidades sobrehumanas que constituyen un amplio espectro habilidades comoinferencia yreconocimiento de patrones.
Entre los algoritmos de aprendizaje de m´aquinas m´as exitosos se encuentra el algoritmo deredes neuronales [1]. El ´exito de este algoritmo radica en su gran versatilidad sobre el tipo de informa-ci´on que utiliza, su simple formulaci´on, su sencillo algoritmo de aprendizaje y su gran desempe˜no. Conforme crece la capacidad de almacenamiento de informaci´on, procesamiento de datos y abs-tracci´on te´orica; tambi´en crecen los deseos por crear m´aquinas m´as inteligentemente ambiciosas. Es por esto que uno de los retos m´as grandes consiste de acelerar dichas etapas de aprendizaje. Por lo tanto, el objetivo de este trabajo es desarrollar un algoritmo m´as r´apido para llevar a cabo el entrenamiento de Redes Neuronales Convolucionales.
En el cap´ıtulo 1 explicaremos los conceptos b´asicos necesarios para entender al algoritmo pro-puesto. Estos incluyen definiciones b´asicas de aprendizaje estad´ıstico y su versi´on como problema de optimizaci´on. Tambi´en introducir´e los conceptos de convoluci´on, redes neuronales y transforma-da de Fourier explicando, en catransforma-da caso, las versiones que son m´as apropiadas para el entendimiento del algoritmo y mostrando algunos ejemplos pertinentes.
El cap´ıtulo 2 hablaremos sobre la metodolog´ıa llevada a cabo para implementar el algoritmo tomando como base las herramientas del cap´ıtulo 1. Mostraremos c´omo funciona el aprendizaje de m´aquinas para la clasificaci´on por redes neuronales. Finalmente probaremos c´omo la propuesta ayudar´ıa a disminuir el tiempo de entrenamiento, para el cual entrenaremos varias bases de datos conocidas en la literatura en el cap´ıtulo 3.
Las conclusiones de este trabajo se consignan en el cap´ıtulo 4 junto a algunas propuestas de mejoramiento.
3
Cap´ıtulo 1
Marco Te´
orico
1.1.
Aprendizaje de M´
aquinas
Suponga que tiene un conjunto de informaci´on muy grande de la cual desea obtener informa-ci´on. Por ejemplo, el banco de datos de todos los ex´amenes en un hospital; la calificaci´on asignada por cada usuario en un foro de pel´ıculas; la im´agenes m´edicas de resonancia magn´etica de muchos pacientes en el mundo1; la variaci´on de la contaminaci´on del agua en distintos puntos de un r´ıo2
; o la distribuci´on de altura y peso de distintas poblaciones en un pa´ıs. Es natural preguntarse por la procedencia de los datos. ¿Est´an los datos relacionados de alguna forma? ¿Existen tendencias o agrupaciones en los datos? ¿Si tengo un dato adicional incompleto podr´ıa aproximarme a la informaci´on restante con alg´un grado de certeza?
En casos peque˜nos una opci´on v´alida podr´ıa ser graficar los datos en un plano y tratar de responder estas preguntas emp´ıricamente. Normalmente, sin embargo, todas las aplicaciones son solo tratables por medio de implementaciones computacionales. As´ı, en el aprendizaje de m´aquinas el objetivo es dise˜nar un algoritmo que aprenda por s´ı solo a partir de datos preexistentes alg´un tipo de fen´omeno, alg´un patr´on. Los problemas cl´asicos se pueden categorizar en Clasificar, Inferir, Ordenar y validar dependencia.
1.1.1.
Enfoque de Estad´ıstica
El enfoque usual en estad´ıstica para el problema declasificaci´onconsiste en suponer que existe una noci´on de dependencia probabil´ıstica entre el espacio de los objetos que queremos clasificar, y el conjunto de clases posible. Supongamos que tenemos un conjunto de datos{X1, X2, . . . , Xn}que
pertenecen al espacioX, cada uno de los cuales tiene una etiqueta{Y1, Y2, . . . , Yn}en un conjunto
de clasesY. Supongamos que los datos provienen de una distribuci´on desconocidaFXy las clases de
otra distribuci´onFY. El problema de clasificaci´on consiste de encontrar una funci´onc:X→Y, es
decir, una clasificaci´on de los enXen las clases enY. La idea es encontrar una clasificaci´oncbuena.
En el fondo, nos estamos preguntando por la distribuci´on conjunta (X, Y). Entonces, sur-gen varias preguntas pertinentes como: ¿C´omo encontrar una funci´on c a partir de los datos
{(X1, Y1), . . . ,(Xn, Yn)} con el menor error de clasificaci´on E = P(c(X) 6= Y)? ¿Qu´e tan r´
api-do pueapi-do encontrar esta funci´onc si tengon datos? ¿Para una clasificaci´onc fija, c´omo se puede calcular o estimar dicho errorE?
El teorema Bayes nos garantiza que lo mejor que se podr´ıa clasificar a X en Y est´a dictado por las distribuciones condicionales de Y. Suponiendo que las variables admiten una funci´on de densidadf(X,Y), el clasificador de Bayes se define:
c:X→Y, c(x) = arg max
y∈Y
f(Y|X=x)(y). (1.1)
Teorema 1.1.1. (Teorema de clasificaci´on de Bayes) Sean {(Xi, Yi)}i≤n ⊆X ×Y realizaciones
de una variable aleatoria con distribuci´onFX,Y. Si(X, Y)admite una densidadfX,Y, entonces la
1https://www.kaggle.com/c/mlsp-2014-mri/data
4 Cap´ıtulo 1. Marco Te´orico
funci´on de clasificaci´on c : X →Y con el menor error de clasificaci´on E =P(C(X)6=Y) es el clasificador dado por,
c(x) = arg max
y∈Y
f(Y|X=x)(y).
El teorema de Bayes dio lugar a que los estad´ısticos se enfocaran en formas de estimar dicho clasificador. El concepto general del teorema es intuitivo, si pensamos afY|X=x(y) como la
proba-bilidad relativa de que la clasificaci´on seay dado quexes la realizaci´on, entonces la clasificaci´on es el valor de la clase que maximiza esta probabilidad. No obstante, el teorema tambi´en nos dice que hay un l´ımite para el error de clasificaci´on; y este est´a dado por el error del clasificador de Bayes. Considere el siguiente ejemplo,
Ejemplo 1.1.1. Suponga que hay dos clases, Y = {0,1}, y la variable aleatoria X es tal que X|Y=0 ∼ N(1,1), y X|Y=1 ∼ N(−1,1). Suponiendo que la cantidad de elementos en cada clase
es la misma (fy(y) = 0,5δ0+ 0,5δ1), entonces, fY|X=x(y) = fX|Y=y(x)ffY(y)
X(x) =fX|Y=y(x)
1 2fX(x). Por lo tanto,
c(x) =
(
1, si fX|Y=1(x)> fX|Y=0(x),
0, si fX|Y=1(x)< fX|Y=0(x).
=
(
1, si x <0, 0, si x >0.
o
o
o
o
o
o
oo
o
o o
o
o
o
oo o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o o
o
o
oo
o
o
o
o
o
o
o
−3
−2
−1
0
1
2
3
−1.0
0.0
1.0
X
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x x
x
x
x x
x
x
x
x
x x
x
x
x
x
Y=0 Y=1
Figura 1.1: MuestraX para dos clasesY = 0,1.
−3
−2
−1
0
1
2
3
0.00
0.10
t
F_0 F_1
Figura 1.2:Densidades marginalesFX|Y=0, FX|Y=1.
1.1.2.
Enfoque de Optimizaci´
on
En el mismo contexto anterior, suponga que tenemos un conjunto de datos{(Xi, Yi)}. El
pro-blema de encontrar una funci´onc :X →Y buena, requiere de formalizar el concepto de ser o no buena. Para abordar esta disyuntiva, se plantean los errores emp´ıricos y error cuadr´atico como la frecuencia de error en la muestra y el promedio del cuadrado de la diferencia entre la clasificaci´on y el valor real respectivamente:
ˆ E(c) = 1
n
n X
i=1
1.2. Redes Neuronales 5
M SE(c) = 1 n
n X
i=1
(c(Xi)−Yi)2. (1.3)
Ahora bien, es ´util restringir el clasificadorca una familia de posibles clasificadoresF. De este modo, el problema de encontrar un buen clasificador se puede reescribir formalmente de la manera siguiente:
Dados{(Xi, Yi)}i=1,...,n, c= arg min f∈F
E(f). (1.4)
Para que estos problemas sean matem´aticamente tratables, es necesario imponer condiciones sobre los datos, la familia de clasificadores y la formulaci´on de los errores. Naturalmente, estamos interesados en encontrar una soluci´on ´optima en un tiempo razonable. Normalmente se utiliza el MSE para resolver este problema por sus propiedades de diferenciabilidad. Sin embargo, a veces es mejor utilizar otras funciones, tambi´en diferenciables, como 1
n P
i||c(Xi)−Yi||p. Por estas razones,
a la familia de funciones F se le exige que se sea diferenciable con respecto a alg´un par´ametro de modo que el problema original,c= arg minf∈FE(f), se pueda representar como un problema de optimizaci´on que se haya estudiado y su soluci´on —o sus m´etodos para encontrar soluciones aproximadas— sea conocida. Por ejemplo, es deseable poder obtener una representaci´on Lineal, Cuadr´atica, Semidefinida o Convexa en general. Cada uno de los cuatro tipos de problemas men-cionados anteriormente ha sido ampliamente estudiados y son ´areas activas de investigaci´on en optimizaci´on. Algunos de los m´etodos m´as famosos para resolverlos son Simplex, SMO, Goemans-Williamson, Lagrange-KKT, entre otros. [2]
Dichos enfoques —de estad´ıstica y de optimizaci´on— enriquecieron la formulaci´on del proble-ma de clasificaci´on hasta el punto en que se logr´o formalizar, y en cierto sentido unificar, la teor´ıa de aprendizaje y aprendibildiad. Veamos brevemente uno de los hechos que constituyeron la base de esta teor´ıa. Asumiendo las mismas hip´otesis mencionadas anteriormente, el teorema de apren-dibilidad de Vapnik-Chervonenkis demuestra que es posible, para una familia de clasificadoresF
no muy general, estimar correctamente el error P(c(X) 6= Y) por medio del error emp´ırico ˆE. Un hecho asombroso como este, a pesar de que merece una lectura m´as cuidadosa y detenida, no se demostrar´a formalmente en este proyecto, pues se sale de los objetivos planteados. El lector interesado debe remitirse a [3].
1.2.
Redes Neuronales
Las redes neuronales son un tipo de clasificador inspirado en la idea de que una acci´on est´a determinada por distintos tipos de excitaci´on de sus entradas. Considere el bloque Σ, cuya sali-da depende de una transformaci´on lineal a fin de sus entradas X1, . . . , Xn. Para representar la
excitaci´on se aplica sucesivamente una funci´onf no lineal a Σ,
Σ =w0+w1X1+· · ·+wnXn, Y =f(Σ)3.
Figura 1.3: Modelo de una neurona.
En suma, tenemos queY =f(w0+w1X1+· · ·+wnXn) donde w1, . . . , wn. As´ı, el problema
se reduce a encontrar los valoreswi que mejor aproximen aY conociendoXi. Cuandof(t) =t el
6 Cap´ıtulo 1. Marco Te´orico
problema original se vuelve equivalente un problema de regresi´on lineal, pero cuandoY toma va-lores en un conjunto discreto, las aproximaciones usuales para resolver el problema de regresi´on no sirven. Cuando, por ejemplo,f(t) =1(t≥0), entonces, considerados (1, X1, . . . , Xn) como puntos
enRn, la clasificaci´onc representar´a la pertenencia del vector (1, X1, . . . , Xn) al lado positivo del
semiplano con normal (w0, w1, . . . , wn).
Intuitivamente, aumentar la cantidad de neuronas hasta formar una red puede mejorar la capacidad del algoritmo para clasificar acertadamente. De ah´ı, una red neuronal —tambi´en llamada perceptr´on multicapa en el contexto particular clasificaci´on binaria— consiste de utilizar varias neuronas para generar m´ultiples activaciones Σ1, . . . ,Σm, de las cuales se extraen tambi´en m´ultiples
excitacionesf1, . . . , fm. Aunquefipuede ser una funci´on arbitraria, para el problema espec´ıfico de
clasificaci´on es recomendable utilizar funciones que tomen valores en [0,1]. Utilizar varias capas de neuronas para formar unared neuronal nos conlleva a mejorar la resoluci´on al discernir los datos en sus clases correspondientes. De hecho, cualquier funci´on es aproximable por medio de funciones de activaci´on. Este es un hecho importante que vale la pena tener en cuenta y se le llama por Teorema de Aproximaci´on Universal.
Teorema 1.2.1. (Teorema de Aproximaci´on Universal [4]) Seaφ:R→Runa funci´on mon´otona
creciente y continua. SeaI⊆Rmun conjunto compacto. Entonces, para toda toda funci´on continua
sobre I,f ∈C(I), y >0 existenN ∈N,α1, . . . , αN, b1, . . . , bN ∈R,w1, . . . , wN ∈Rm tales que,
ˆ
f(x) :=X
i
αiφ(wiTx+bi), sup x∈I
|fˆ(x)−f(x)|=||fˆ−f||∞< .
Si juntamos el teorema de aproximaci´on universal y el teorema de Bayes podemos pensar que, en el caso ideal, resolver el problema de clasificaci´on para una red neuronal suficientemente grande nos llevar´a a una soluci´on que se aproxima, en el l´ımite, al clasificador de Bayes. A pesar de las buenas intenciones al aumentar el tama˜no de la red, surgen consecuentemente muchas m´as preguntas tales como ¿Cu´antas capas son suficientes? ¿Qu´e funciones de activaci´on son mejores? ¿C´omo implementar una red grande computacionalmente? ¿C´omo entrenar la red? Estas preguntas a´un no tienen soluciones exactas y en la pr´actica se recurre a pruebas heur´ısticas sobre estos par´ametros. Las funciones de activaci´on m´as comunes son la sigmoidal φ(t) = 1+1e−t; la arcontangente φ(t) =
2
πarctan(t); la funci´on de escal´on de Heaviside φ(t) = 1(t ≥0); y la rectificadora lineal φ(t) =
m´ax(0, t).
1.2.1.
Redes Convolucionales
Las redes convolucionales son un tipo de red neuronal artificial en la que existen capas de activaci´on en las que se utiliza convoluciones en lugar de producto punto. Es decir, se reemplaza φ(wTx+b) porφ(w∗x+b). Esta idea sugiere varias ventajas: primero, la cantidad de par´ametros
de entrenamiento aumenta, lo que podr´ıa traducirse a una mejor resoluci´on en la captura de atri-butos relevantes para la clasificaci´on. Tambi´en resulta ser conveniente utilizar convoluci´on porque, gracias al teorema de convoluci´on, podemos representar cualquier tipo de filtro de respuesta finita al impulso (FIR) por medio de una convoluci´on. Por lo tanto, podr´ıa pensarse que las capas con-volucionales act´uan como filtros que, a medida que se entrena la red, se van adaptando al tipo de problema espec´ıfico en el que se quiere clasificar.
Recordemos que la convoluci´on entre dos se˜nales X ∈Rn yY ∈Rm nos forma otra se˜nal en
Rm+n dada por
(X∗Y)i= X
k
XkYi−k = X
r+s=i
XrYs. (1.5)
Para matrices tenemos la siguiente definici´on para la convoluci´on entre una imagenX y un filtro F. Considere una imagenX ∈RM×N y un filtroF ∈Rm×n, entoncesY :=X∗F es la matriz en
enR(M+m)×(N+n)en donde,
Yij = X
k,l
Xk,lFi−k,j−l= X
k+l=i X
r+s=j
1.3. Transformada de Fourier 7
Ejemplo 1.2.1. Se calcula el resultado de la convoluci´on entre una imagen de 512×512 y un filtro de 3×3.
∗
−1 −2 1
3 2 −1 1 1 −2
=
Una capa de la red convolucional est´a conformada, entonces, por varias secciones de covoluci´on. Para generalizar esta idea a im´agenes representadas por tres canales —RGB— se consideran tam-bi´en tres canales de filtros y el resultado final se suma. Esto es, siXRGB ∈RM×N×3,F ∈Rm×n×3
XRGB∗FRGB :=XR∗FR+XG∗FG+XB∗FB. (1.7)
Ahora bien, el resultado de aplicar la convoluci´on a un conjunto de filtrosF1, . . . , FD∈Rm×n×3
ser´a F= (F1, . . . , FD)∈Rm×n×3×D.
XRGB∗F:= (XRGB∗F1, . . . , XRGB∗FD).
Figura 1.4:Convoluci´on entre una Imagen a color y un banco deDfiltros.
1.3.
Transformada de Fourier
La transformada de Fourier es una transformaci´on entre espacios de Hilbert que, aplicado a la caso de L2(C)[0,2π] o l2(C), se traduce en captura de informaci´on frecuencial de la funci´on a la
que se le aplica. La definici´on es,
f ∈(H,h·,·i) con base ortonormal (ex)x∈I, F(f)(x) :=hf, exi. (1.8)
Ejemplo 1.3.1. Se consideran los casos particulares L2(C)[0,2π],l2(C), que son conocidos como
CTFT y DTFT respectivamente.
f ∈L2(C)[0,2π], F(f)(x) :=
Z 2π
0
f(t)e−2πixtdt. (1.9)
f ∈l2(C), F(f)[n] :=
∞
X
k=−∞
8 Cap´ıtulo 1. Marco Te´orico
1.3.1.
Transformada Discreta de Fourier
La transformada discreta de Fourier es una implementaci´on num´erica de la transformada de una se˜nal que se asume es una submuestra de una se˜nal peri´odica. La definici´on de esta es, dado un vector X∈Rn,
ˆ X(i) =
n−1
X
j=0
X(j)ωijn, dondeωn:=e2
√
−1π/n. (1.11)
El algoritmo de Cooley-Tukey permite calcular esta transformaci´on en tiempo O(nlogn). La versi´onddimensional de esta transformada es natural:
X ∈Rn×···×n=Rn
d
, X7→X,ˆ Xˆ(i1,...,id)=
X
(i0
1,...,i0d)∈[n]d X(i0
1,...,i
0 d)ω
i1i01+···+idi0d
n . (1.12)
En particular para una imagen, la transformada se reescribe como una transformada primero por filas(o columnas) y luego por columnas(o filas).
X ∈RM×N, F(X)(i, j) =
M X
i0=1
N X
j0=1
X(i0, j0)ωMii0ωNjj0. (1.13)
Ejemplo 1.3.2. Se consideran las transformadas de Fourier para dos im´agenes4
F
−→
Figura 1.5: Lena,X, y su transformada de Fourier, log10(1 +|F(X)|).
F
−→
Figura 1.6:Una imagen de lentejas,X, y su transformada de Fourier, log10(1 +
|F(X)|).
1.3.2.
Transformada Dispersa de Fourier
Los autores en [6] crearon un algoritmo muy eficiente para calcular esta transformaci´on pa-ra se˜nales que son dispersas en frecuencia. Una se˜nal x∈ Rn esk-dispersa en frecuencia cuando
|{supp(ˆx)}| ≤k, es decir, cuandoxtiene a lo m´askcomponentes frecuenciales no nulas. Si tuvi´ era-mos que calcular la transformada de Fourier discreta sobre un conjunto de se˜nales {x1, . . . , xn}
que sabemos a prior es disperso, esperar´ıamos que exista una implementaci´on m´as eficiente para calcularla. El algoritmo dise˜nado en el laboratorio de inteligencia artificial del MIT aprovecha al
1.3. Transformada de Fourier 9
m´aximo la propiedad de dispersi´on para utilizar m´etodos estoc´asticos de estimaci´on. Dicho algorit-mo es capaz de encontrar con alta probabilidad la transformada en se˜nales exactamentekdispersas en tiempoO(klogn). Para se˜nales aproximadamentek-dispersas el tiempo que le toma algoritmo esO(klognlog(n/k)). La idea del algoritmo es simple: estimar las posiciones de los coeficientes grandesInnerLoop locate; estimar el espectro en estas posicionesInnerLoop estimate; repetir la localizaci´on hasta tener una estimaci´on casi exacta, y recuperar el valor del espectro en estas posiciones.
Algorithm 1Sparse one-dimensional Fast Fourier Transform
1: procedureInnerLoop
2: procedure InnerLoop locate(X, σ, G, d)
3: Yi ←Xσi+τ.
4: Yi ←GiXσi+τ.
5: Zi←Pj≡BiYj.
6: Zˆi←Pj∈[B]Zjω
ij B.
7: Hashed Index←Seleccionar losd´ındices m´as altos en {|Zˆi|}.
8: Index←σ−1(Hashed Index).
9: returnIndex 10: end procedure
11: procedure InnerLoop estimate(Index,G) 12: EstimateIndex= ˆZHashed Index/GHashed Index.
13: V alueIndex=EstimateIndex.
14: V alue[n]−Index = 0.
15: returnV alue. 16: end procedure 17: end procedure
Algorithm 2Sparse one-dimensional Fast Fourier Transform
1: procedureOuterLoop(X, G, d)
2: fori∈ {1, . . . , O(logn)}do 3: σ←k, such that (n, k) = 1.
4: Indexi ←InnerLoop locate(X, σ, G, d)
5: end for
6: I← {j∈ ∪iIndexi:|{i:j∈Indexi}| ≥ n2}.
7: V alue←InnerLoop estimate(I, G). 8: ReturnValues.
9: end procedure
Una imagen de ejemplo del funcionamiento se muestra a continuaci´on.
11
Cap´ıtulo 2
Metodolog´ıa
Para abordar el problema de clasificaci´on de im´agenes, proponemos utilizar redes neuronales convolucionales. El clasificador c consistir´a de una sucesi´on de capas c = (c1, c2, . . . , cn) que se
aplican serialmente de modo la clasificaci´on de una imagenA∈Rm×n×3 se efectuar´a al aplicar la
primera capa,c1, e iterativamente aplicar el resultado de la capa actual a la siguiente,
A c1
−→c1(A)
c2
−→ . . . cn
−→c(A).
Los par´ametros que se aprenden durante el proceso de aprendizaje son entonces los par´ ame-tros wi de cada capa ci. Consiguientemente nuestro clasificador, c, est´a parametrizado porw :=
(w1, . . . , xn). Para ello, se propone el siguiente esquema de soluci´on:
1. Obtener un conjunto de im´agenes previamente clasificadas:{(Xi, Yi)}i≤n.
2. Particionar este conjunto en dos subconjuntos:train,val, donde |valn |=k%.
3. Para el conjuntotrain, resolver —o aproximar— la soluci´on del problema de optimzaci´on,
w∗= arg min w∈W
M SE(c(w)).
4. Estimar el error de clasifcaci´on en el conjuntoval,
ˆ
E(w∗) = |val1| |val|
X
i=1
1(c(Xi)6=Yi).
El paso clave de este esquema es la aproximaci´on a la soluci´on del problema de optimiza-ci´on. Dado que las exitaciones son no lineales, utilizaremos un t´ecnica conocida como descenso de gradiente con tasa de aprendizajeη; regularizaci´on tipo weight decayλ; y momentumα. Las descripciones de estos conceptos se muestran en la siguiente secci´on.
2.1.
Algoritmo de Entrenamiento
2.1.1.
Backpropagation
El aprendizaje es perfecto cuandoP(c(X)6=Y) = 0. Ya vimos que no siempre es posible alcan-zar aprendizaje perfecto y adem´as la mejor clasificaci´on est´a siempre dominada por la clasificaci´on intr´ınseca de Bayes. De esta forma, el proceso de entrenamiento consiste de encontrar el c que minimiceEc=P(c(X)6=Y). Como es usual, estos problema no son siempre convexos, y por ende
no existe un m´etodo general de resolverlo. As´ı, toca recurrir a m´etodos iterativos aproximados, ac´a consideramos el caso de descenso de gradiente con tasa de aprendizaje η, regularizaci´onλ, y momentumα.
Dados{(Xi, Yi)}i∈train, w∗= arg min
w 1 2
X
i∈train
||cw(Xi)−Yi||22+
λ 2||w||
2
12 Cap´ıtulo 2. Metodolog´ıa
Algorithm 3Gradient Descent
1: procedure Gradient Descent({(Xi, Yi)}i∈train, Ep, η, λ, α,w0)
2: w←w0.
3: fori∈ {1, . . . , Ep}do
4: w←w−η(∇wM SE(cw) +λw) +α∆(w). 5: end for
6: Return w. 7: end procedure
Dependiendo de las condiciones de la red, calcular∇wM SE(cw) puede ser muy complicado si se utiliza la f´ormula entera de todas las capas para el error. Sin embargo, es claro que∇wM SE(cw) = P
i(cw(Xi)−Yi)(∇w(cw)). As´ı que el problema se transforma en calcular∂cw/∂wi. Ahora, el hecho
de que la red est´e divida en capas una tras otra,c=cn◦cn−1◦ · · · ◦c1, nos permite calcular esta
derivada de manera iterativa utilizando la regla de la cadena. A este proceso se le conoce como BackPropagation. El concepto general de BackPropagation se basa en:
∂cw ∂wi
= ∂(cn(cn1◦ · · · ◦c1))
∂wi
= ∂cn ∂wi
((cn1◦ · · · ◦c1))
∂(cn1◦ · · · ◦c1)
∂wi
. (2.2)
En este orden de ideas, para entrenar la red es necesario saber c´omo calcular las derivadas en cada una de las capas ∂cj/∂wi. En la pr´actica existen muchas propuestas para las capas. En
este trabajo nos limitaremos a utilizar solamente las capas de convoluci´on, y las capas no lineales correspondientes aReLu,MaxySoftMax. La capaSoftMaxes una versi´on diferenciable del m´aximo y se define como:
X ∈Rk1×k2, SoftMax(X) = log
k1 X
i=1
k2 X
j=1
eX(i,j)
. (2.3)
Ahora bien, cada uno de los t´erminos∂M SE(cw)/∂wien el algoritmo de descenso de gradiente
incluye toda la muestra de entrenamientotrain. Esto no solo puede hacer el proceso m´as lento y m´as pesado computacionalmente, sino que puede resultar en soluciones que no son ´optimas [7]. Por esta raz´on se ha pensado en que es mejor realizar cada paso durante Backpropagation utilizando submuestras de train denominadas batches. Al algoritmo basado en entrenamiento porbatches se le conoce comoStochastic Gradient Descent.
Algorithm 4Stochastic Gradient Descent
1: procedure SGD({(Xi, Yi)}i∈train, Ep, η, λ, α,w0, B)
2: train=T1∪ · · · ∪Tk, tales que|Ti| ≤B.
3: w←w0.
4: fori∈ {1, . . . , k}do
5: w←Gradient Descent({(Xj, Yj)}j∈Ti, Ep, η, λ, α,w).
6: end for 7: Return w. 8: end procedure
2.1.2.
Convoluci´
on
Las redes convolucionales revolucionaron las m´aquinas de clasificaci´on en cuanto los compu-tadores fueron mejorados, pues, aunque la teor´ıa de BackPropagation para redes convolucionales fue creada desde hace m´as de treinta a˜nos, no fue posible implementarla eficientemente sino hasta hace menos de diez. Desde entonces, se han creado ´areas en las que se busca c´omo aplicar estas redes en otras ramas de las ciencias y al mismo tiempo se han concentrado muchos esfuerzos por tratar de mejorar su desempe˜no y disminuir el costo computacional y temporal. Veamos breve-mente por qu´e es pesado computacionalmente.
2.1. Algoritmo de Entrenamiento 13
Si tenemos un batch de tama˜no BX de im´agenes XRGB de tres canales de tama˜no RM×N,
en total tendremos un arreglo de tama˜no X ∈ RM×N×3×BX. De la misma manera, tenemos un conjunto deDfiltros de tres canales de tama˜noRm×n, as´ı queF∈Rm×n×3×D. Entonces, por cada
una de lasBX im´agenes en elbatchhay que realizar la operaci´on de convoluci´on para obtener un
arreglo enR(M−m+1)×(N−n+1)×D. En cada convoluci´on estamos realizando un producto-suma que
requiere deO(m×n) operaciones, que se deben repetir a lo largo de toda la imagen (M −m+ 1)×(N−n+ 1) veces. As´ı que al final, una sola convoluci´on con un solo filtro tiene complejidad en tiempo de,
O((m×n)((M−m+ 1)×(N−n+ 1))).
Por lo tanto la complejidad de la operaci´on completaX∗Fes,
O((m×n)((M −m+ 1)×(N−n+ 1))(3)(D)(BX)).1
Para facilitar los c´alculos asumiremos de aqu´ı en adelante que la imag´anes y los filtros ser´an cuadrados,M =N,m=n. As´ı, la expresi´on para la complejidad de la convoluci´on porbatches,
O(m2(M−m+ 1)2(3)(D)(BX)). (2.4)
La convoluci´on es, por lo tanto, la operaci´on que domina el tiempo de ejecuci´on del algoritmo de aprendizaje. La propuesta de este trabajo es optimizar dicho proceso combinando las ideas de transformada dispersa de Fourier, convoluci´on y procesamiento paralelo en tarjetas gr´aficas. Va-rios autores [8, 9] ya han explorado la viabilidad de utilizar transformadas de Fourier para facilitar labor extensiva y repetida de la convoluci´on.
La propuesta, siguiendo las ideas de los autores en [9], es transformar las im´agenesX→ F(X), F→ F(F), para que las convoluciones se puedan hacer m´as r´apidamente apelando al teorema que relaciona la transformada de Fourier y las convoluciones.
Teorema 2.1.1. (Teorema uni-dimensional Convoluci´on Fourier) SeanX ∈RN,F∈
Rn. Defina
X∗F =:Y ∈RN−n+1, comoYi=PjXi+jFn−j. SiFN denota la FFTN-dimensional, entonces,
∀i=n+ 1, . . . , N : FN(X)iFN(F)i=FN(X∗F)i−n.
As´ı que para efectuar la convoluci´on entreXyF, solo tenemos que hacer 3(D)(BX) productos
directo de F(X) y F(F) que requieren M2 operaciones. Transformar cada imagen (filtro) toma O(2M2logM), as´ı que en total la complejidad de transformar, hacer producto directo y posterior-mente hacer la transformaci´on inversa es,
O(2M2log(M)(3DBX) +M2(3DBX) + 2M2log(M)(DBX)). (2.5)
Entonces, se puede notar que la complejidad est´a dominada por el tiempo que toma la primera transformaci´on deXy F. As´ı que nos enfocaremos en optimizar este proceso en particular. Para tal fin vamos a construir una transformada m´as r´apida,sfft, basada en la idea de la transformada dispersa de [6] y el hecho que las im´agenes grandes son dispersas en frecuencia. Vea, por ejemplo, las figuras 1.4 y 1.5. Para construir el algoritmo tendremos en cuenta las siguientes definiciones.
Definici´on 2.1.1. Para n := (n1, . . . , nd) ∈ Nd definimos, n-transformada discreta de Fourier
como:
Fn:Cn1×···×nd →Cn1×···×nd,
X7→Xˆ, Xˆ(i1, . . . , id) =
X
(j1,...,jd)∈[n1]×···×[nd]
X(j1, . . . , jd)ωi1j1n1 . . . ω idjd
nd .
Dondeωa =e 2π√−1
a .
Definici´on 2.1.2. araK:= (k1, . . . , kd)∈Nd definimos,k-submuestra como:
SK:Cn1×···×nd→Ck1×···×kd,
1En esta notaci´on de complejidad conservo la constante 3 para hacer las comparaciones con otras
14 Cap´ıtulo 2. Metodolog´ıa
X7→Y, Y(i1, . . . , id) =X(i1bnk1
1c, . . . , , idb nd
kdc).
Ejemplo 2.1.1. Se muestran ejemplos de Sk yS(n/2,n/2).
Figura 2.1: Ilustraci´on de dos submuestras, un en dimensi´on 1 y la otra en
dimensi´on 2.
Definici´on 2.1.3. ParaK:= (k1, . . . , kd)∈Nd definimos, k-m´oduloSuma como:
ΣK :Cn1×···×nd→Ck1×···×kd,
X7→Y, Y(i1, . . . , id) = X
jl≡klil
X(j1, . . . , jd).
Ejemplo 2.1.2. Se muestra un ejemplo deΣk.
Figura 2.2: Ilustraci´on de unakm´odulo suma en dimensi´on 1.
Definici´on 2.1.4. Paraσ:= (σ1, . . . , σd)∈Nd definimos, σ-permutaci´on como:
Pσ:Cn1×···×nd→Cn1×···×nd,
X7→Y, Y(j1, . . . , jd) =X(σ1j1, . . . , σdjd).
Con estas definiciones ya podemos construir el algoritmo. Antes de esto, consideremos los siguientes dos teoremas que relacionan la transformada de FourierndimensionalFncon la trans-formadakdimensionalFk; laksubmuestraSk; lakm´odulo suma Σk; y laσpermutaci´onPσ.
Teorema 2.1.2. Sean k,n, con ki|ni. Sean Fn,Sk,Σk,Fk como en las definiciones 2.1.1-2.1.4. Entonces, el siguiente diagrama es conmutativo:
Cn Cn
Ck Ck
Fn
Sk αΣk Fk
, dondeα= QQkn.
La conclusi´on de este teorema es que si, en lugar de calcular transformada de Fourier completa, calculamos la transformada de una submuestra, entonces es lo mismo que hacer una m´odulo suma de la transformada completa. O sea que, si quisi´eramos reconstruir la transformada de Fourier de una se˜nal grande, podemos solo calcular la transformada de una submuestra y luego mapear los coeficientes a las posiciones reales —escalando apropiadamente porα−1— sabiendo que provienen de una suma m´odulo.
2.1. Algoritmo de Entrenamiento 15
Teorema 2.1.3. Seank,n, conki|ni. SeanFn,Sk,Σk,Fk, Pσ como en las definiciones 2.1.1-2.1.4,
siendo(σ,n) = 1. SeaG∈Cn. Entonces, el siguiente diagrama conmuta:
Cn Cn
Cn Cn
Cn Cn
Ck Ck
Fn
Pσ Pσ−1
Fn
QnG· ˆ G∗ Fn
ΣK SK Fk
Este teorema es esencialmente el coraz´on del algoritmo de la transformada dispersa del MIT. El primer diagrama captura el hecho que permutar en espacio y luego transformar es equivalente a transformar y luego efectuar la permutaci´on inversa. Este paso es el que se repiteO(logn) veces. En el siguiente diagrama se resume el hecho que filtrar en espacio —multiplicar punto a punto— y luego transformar es equivalente a transformar y luego hacer convoluci´on con la transformada del filtro. En este paso del algoritmo la se˜nal, que est´a permutada en frecuencia, se le aplica la convoluci´on con un filtro cuya funci´on es visibilizar las frecuencias altas. Para esto se escoge un filtro lo m´as parecido a una ventana exacta para que cuando se efect´ue la convoluci´on cada frecuencia se repita uniformemente sobre un intervalo de dimensi´onk—tambi´en llamadobucketpor los autores originales. Finalmente, en el ´ultimo diagrama se captura el hecho inverso al teorema 2.1.2, a saber, sumar m´odulo y luego transformar es equivalente a transformar y luego submuestrear. En este paso, ya que hemos “agrandado” cada coeficiente grande en el paso previo al filtrar, vamos ahora a submuestrear de tal forma que, con alta probabilidad recuperemos los coeficientes agrandados. En resumen podemos resumir que el algoritmo disperso, descrito en el teorema 2.1.3 realiza lo siguiente:
1. Permutar los coeficientes.
2. Replicar estos coeficientes a lo largo de una ventanak.
3. Escoger una muestra de cada ventana y as´ı recuperar cada coeficiente.
Se describen los dos algoritmos propuestos que denominar´esfft1ysfft2. El primer algoritmo asume que todos los coeficientes se encuentran, posiblemente aproximadamente, concentrados sobre la ventana de tama˜noky por lo tanto al k-submuestrear en frecuencia se suman m´odulok, pero solo el t´ermino de la ventana es no nulo.
Algorithm 5sparse Fourier Transform 1
1: proceduresfft1(X,k)
2: α← QQnk.
3: Y ← SkX.
4: Yˆ ← Fk(Y).
5: Xˆ ←α−1hash( ˆY). .hash retorna las posiciones de lakventana centrada en0.
6: ReturnX.ˆ 7: end procedure
Para la construcci´on desfft2vamos a asumir que la se˜nalX est´a espectralmente concentrada en una kventana centrada en 0, y los coeficientes que no est´an dentro de la ventana son pocos —dispersos. Entonces, primero se estiman dichos coeficientes que est´an por fuera de la ventana utilizando la transformada dispersa original [6], pero adaptada para dos dimensiones. Luego se efect´uasfft1para reconstruir la ventana.
16 Cap´ıtulo 2. Metodolog´ıa
Algorithm 6sparse Fourier Transform 2
1: procedure sfft1(X,k, G, d) 2: outside←OuterLoop(X, G, d). 3: inside←sfft1(X,k).
4: Xˆ ←outside∪inside. 5: ReturnX.ˆ
6: end procedure
As´ı, podremos cambiar la transformaci´on de los BX batches de XRGB en tiempo O(klogk)
con sfft1y en tiempoO(klogk+klogn) consfft2. Adem´as, el filtroGque se utilizar´a ser´a la
ventana exacta de tama˜nok, pues la multiplicaci´on punto a punto en GPU toma solamenteO(1). A continuaci´on se muestra la complejidad temporal te´orica de cada proceso de estos dos diagramas. La demostraci´on de estos hechos la puede encontrar en el ap´endice.
Cn Cn
Ck Ck
Fn
Sk αΣk Fk
GP U
−→ C
n
Cn
Ck Ck
O(nlogn)
O(1) O(logk)
O(klogk)
Cn Cn
Cn Cn
Cn Cn
Ck Ck
Fn
Pσ Pσ−1
Fn
QnG· ˆ G∗ Fn
ΣK SK Fk
GP U −→
Cn Cn
Cn Cn
Cn Cn
Ck Ck
O(nlogn)
O(1) O(1)
O(nlogn)
O(1) O(1)
O(nlogn)
O(logk) O(1)
O(klogk)
En conclusi´on, se implementar´a la convoluci´on utilizando el siguiente diagrama,
Figura 2.3:Ilustraci´on de la propuesta para efectuar convoluci´on.
En suma, queremos resolver el problema de optimizaci´on 4 utilizando descenso de gradiente para lo cual necesitamos calcular∂L/∂wi, que, a su vez, se puede reducir a calcular∂cj/∂wi(2.2).
2.1. Algoritmo de Entrenamiento 17
Para las capas diferentes a convoluci´on – y por lo tanto no lineales– la derivada se puede calcular f´acilmente y la implementaci´on ya viene dada paraMatlabpor [10]. Nos enfocaremos en el an´ ali-sis de∂c/∂wi cuandoc es una convoluci´on y veremos c´omo se traduce esta derivada a su versi´on
frecuencial.
Sea X∈RM×M×3×BX,F∈
Rm×m×3×BF yY∈
R(M−m+1)×(M−m+1)×BF×BX tales que,
Y=X∗F.
Por 2.2, tenemos que ∂∂LX y ∂L∂F se pueden calcular conociendo ∂∂LY. De hecho, dado que la operaci´on∗es lineal, para cadai∈[BX],
∂L ∂Xi
= X
f∈[BF] ∂L ∂Yf i
∗∂Yf i
∂Xi
= X
f∈[BF] ∂L ∂Yf i
∗Ff.
An´alogamente, para cadaf ∈[Bf],
∂L ∂Ff
= X
i∈[BX] ∂L ∂Yf i
∗∂Yf i
∂Ff
= X
i∈[BX] ∂L ∂Yf i
∗Xi.
Ahora bien, la transformada de Fourier tambi´en es lineal y tambi´en podemos utilizar el dominio frecuencial para calcular las derivadas. Las versiones frecuenciales de∂L/∂wison por consiguiente:
Fn
∂L
∂Xi
l
= X
f∈[BF]
Fn
∂L
∂Yf i
l
Fn(Ff)l. (2.6)
Fn
∂L
∂Ff
l
= X
i∈[BX]
Fn
∂L
∂Yf i
l
19
Cap´ıtulo 3
Evaluaci´
on Computacional
En esta secci´on vamos evaluar los algoritmos descritos en la secci´on anterior. La implementaci´on de estos algoritmos se llev´o a cabo en una m´aquina con sistema operativoWindowscon una CPU que consiste de 8 procesadores AMD FX-8350, con 8Gb de memoria RAM y GPU GeForce GTX 750 con capacidad de c´omputo 5.0. Se utiliz´o el toolbox de versi´on libreMatConvNet[10], sobre
MatlabR 2015a. Para la implementaci´on de los algoritmos dispersos nos basamos en el algoritmo implementado sobre C++ [6] transferido a CUDA y Matlab. Las bases de datos utilizadas para demostrar la efectividad del algoritmo las puede encontrar en [5, 11, 12, 13, 14].
El primer banco de im´agenes,DTD, fue recopilado por Cimpoi et al. [11]. Este consiste de 47 clases de texturas diversas presentes en la naturaleza. Las im´agenes est´an a color y cada clase con-tiene 120 instancias de im´agenes de distintos tama˜nos, lo que equivale a un total de 5640 im´agenes de entrenamiento.
En el segundo banco de im´agenes,KTH, hay una peque˜na colecci´on de im´agenes con texturas de ambientes de hogar [13]. Las im´agenes est´an escala de grises y tienen dimensi´on 640×480 pixeles. Hay un total de 15 clases y 40 instancias por clase. La cantidad total de instancias en la base de datos es, por lo tanto, 600.
La tercera base de datos evaluada es la colecci´on de im´agenes, Kyleberg , consistente de 19 clases de texturas variadas [5]. Las im´agenes se encuentran en escalas de grises en dimensi´on 576×576. En cada clase hay 160 instancias para el entrenamiento.
La cuarta base de datos, Diabetic Retinopathy , fue obtenida del desaf´ıo de detecci´on de Diabetes realizado por Kaggle [14]. Esta base de datos contiene las fotograf´ıas a color de la retina de alrededor de 9000 pacientes. Cada paciente est´a clasificado en una de 5 clases dependiendo del estado de su Diabetes Retinop´atica. Las clases sonSin DR,DR D´ocil,DR Moderada,DR Severa y DR proliferativa. El tama˜no original de 2496×1664, pero ac´a utilizamos una reducci´on a 256×256.
Finalmente evaluamos la base de datos construida inicialmente por la universidad de Stanford y posteriormente procesada por Ng et al.stl[12]. En esta tenemos 10 clases de objetos y/o animales a color en dimensi´on 96×96. En las siguientes figuras se ilustran im´agenes de algunas de las clases en cada banco de datos. Puede encontrar el resumen de esta informaci´on en la siguiente tabla.
Base de datos Clases Instancias Instancias/clase Dimensi´on Color
DTD 47 5640 120 200–400 S´ı
KTH 15 600 40 640×480 No
Kyleberg 19 3040 160 576×576 No
Diabetic Retinopathy 5 18307 (13410,1312,2754,449,382) 256×256 S´ı
stl 10 13000 1300 96×96 S´ı
20 Cap´ıtulo 3. Evaluaci´on Computacional
Banded Cracked HoneyCombed Pasiley Swirly
Figura 3.1:Im´agenes de ejemplo de 5 clases de la baseDTD.
Brick Carpet Fur Knit Uphosltery
Figura 3.2:Im´agenes de ejemplo de 5 clases de la baseKTH.
Blanket Ceiling Floor Rice Stone
Figura 3.3: Im´agenes de ejemplo de 5 clases de la baseKyleberg.
Figura 3.4:Cinco im´agenes de ejemplo de la baseDiabetic Retinopathy.
Dog Cat Bird Airplane Car
Figura 3.5:Im´agenes de ejemplo de 5 clases de la basestl.
3.1.
CUDA y Programaci´
on Paralela
Se implementar´an los algoritmos en la versi´on basada en C de la plataforma de programaci´on en tarjetas gr´aficas CUDA. La programaci´on sobre este lenguaje requiere un estudio detallado de la arquitectura particular de cada tarjeta gr´afica y de descripciones m´as precisas sobre el hardware espec´ıfico que se emplea durante la ejecuci´on de cada comando. Por lo tanto no se comentar´an muchos detalles sobre c´omo est´a conformada esta tarjeta de procesamiento. A grandes rasgos, la tarjeta de procesamiento gr´afico, GPU, puede realizar muchas m´as operaciones en paralelo que un procesador central, CPU, debido a que su arquitectura enfoca m´as transistores en m´as subm´odulos de procesamiento (ALU, CONTROL y CACHE). Por lo tanto en la GPU tenemos capacidad de realizar m´as operaciones en las unidades Aritm´etico-L´ogicas (ALU) de manera independiente a
3.2. CUFFT 21
cambio de tener menos registros por Unidad y unidades menos r´apidas.
Figura 3.6:Breve ilustraci´on de la arquitectura en una GPU y CPU. Gr´afica de
desempe˜no en GFLOPs/s. [15]
En muchos casos resulta mejor tener pocos procesadores con m´as velocidad de operaci´on por segundo y con gran capacidad de memoria que tener muchos procesadores no tan r´apido. Para algoritmos que necesiten operar muchos procesos de forma serial es recomendable utilizar im-plementaciones en CPU. Si, por el contrario, necesitemos hacer operaciones sencillas sobre cada elemento de un arreglo y las operaciones entre arreglos son todas independientes entonces podr´ıa explorarse qu´e tan eficiente ser´ıa la implementaci´on sobre GPU. Cabe notar que para realizar ope-raciones sobre la GPU es necesario primer transferir los datos a la memoria global de la GPU, efectuar las operaciones y luego trasferir los datos procesados de la GPU a la CPU. De aqu´ı en adelante llamaremos a las memorias del CPU y GPU comohost ydevice respectivamente como es com´un en literatura.
3.2.
CUFFT
Nuestra propuesta para la optimizaci´on del algoritmo est´a centrada en la capacidad de realizar r´apidamente la trasformada de Fourier. Dado que en los algoritmos sFFT1 y sFFT2 realizamos
Fk(X), donde k|n y ki ni, debemos tener presente la complejidad intr´ınseca de Fk. Tanto Matlab como CUDA tienen versiones ya implementadas basadas en la versi´on original del
algo-ritmo de Cooley-Tukey. Vale la pena tener en cuenta las siguientes consideraciones sobre cada una de las dos implementaciones:
1. Matlab utiliza versiones optimizadas del algoritmo de Cooley-Tukey para inputs con di-mensiones que son potencias de primos peque˜nos:{2a,3b,5c}.
2. Matlab precompila implementaciones apropiadas de FFTW en CPU. En CPU utiliza ver-siones de CUFFT.
3. CUDA por s´ı solo no contiene comandos para realizar esta operaci´on por lo cual necesita incluir la librer´ıacufft.
4. CUDA necesita crear un planificador para la transformada en cada operaci´on y para esto es necesario realizar lo siguiente:
Instanciar un planificadorplan de tipocufftHandle.
Inicializar el planificador definido previamente por medio de cufftPlanMany. Ac´a se definen todos los par´ametros de la transformada (Dimensi´on, muestreo, batches). Liberar el espacio de memoria para el plan por medio decufftDestroy.
5. CUDA permite realizar transformadasC→R(transformada directa) yR→C(transformada
inversa) aprovechando las simetr´ıas de cada una.
22 Cap´ıtulo 3. Evaluaci´on Computacional
Naturalmente, queremos utilizar la implementaci´on m´as r´apida y que utilice eficientemente el uso de memoria. Para esto se decidi´o, por un lado, convertir cada base de datos a escala de grises y uniformizar todos los tama˜nos a {642,1282,2562}. Por otro lado, pondremos a prueba ambas
implementaciones variando el tama˜no de los batches. Veremos cu´al implementaci´on utiliza m´as eficiente la memoria utilizando elNVIDIA visual profiler y evaluaremos los tiempos de corrida de ambos con los comandos de matlabgputimeit.
Dimensi´on
64 128 256
4 0.15(1.49) 0.15(2.03) 0.34(2.61) 16 0.29(2.01) 0.38(2.61) 1.11(6.12) Batch 64 0.72(2.60) 1.27(7.79) 3.57(21.20)
256 2.99(7.68) 4.61(21.32) 78.19(76.98) 512 10.38(15.61) 8.98(39.05) 153.43(152.19)
Cuadro 3.2: Tiempo en milisegundos que le tom´o a Matlab(CUDA) realizar
F(X).
Se puede notar que es el para dimensiones inferiores a 256 y bathces de tama˜no menores que 512, el tiempo que le toma aMatlab llevar a cabo la fft es menor.Matlab optimiza los llamados de FFT en dimensiones peque˜nas y a eso se debe esta discrepancia. Sin embargo, cuando la cantidad de batches aumenta y en im´agenes m´as grandes ambos procesos toman el mismo tiempo. Veamos qu´e ocurre en profiler cuando (Batch, Dimension) = (64,256),(512,256).
El comando utilizado en el NVIDIA visual profiler es
-nojvm -nosplash -r test
El resultado demuestra que ambas transformadas realizan exactamente la misma operaci´on (llamado a CUFFT con la misma cantidad de threads y blocks). Sin embargo Matlab realiza m´ultiples operaciones para redimensionar el arreglo enRM×M×1×Bch y luego s´ı efect´ua la
trans-formada. Por otro lado el llamado del kernel que realiza CUFFT directamente es m´as eficiente en cuanto a que el kernel realiza la copia de X a dX m´as r´apido pero desalocar la memoria le toma
m´as tiempo. Por tanto se decide utilizar la implementaci´on fft deMatlab .
3.3.
Convoluci´
on
En esta secci´on pondremos a prueba la diferentes versiones para realizar la operaci´onX∗F, en el queX∈RM×M×1×BX,F∈
Rk×k×1×Bf sobre el rango
(M, k, BX, BF)∈ {26,27,28} × {4,8,12,16} × {25,26,27} × {2,4,6,8,10}.
A continuaci´on vamos a contrastar los tiempos de los algoritmos vl nnconv [10], fftconv, y
sfftconv 5. La primera tabla muestra el tiempo de ejecuci´on de vl nnconv y en la imagen
si-guiente se muestran un mapa de color con la relaci´on de este tiempo con los de vl nnconv y
3.3. Convoluci´on 23
M 64 128 256
k 4 8 12 16 4 8 12 16 4 8 12 16
BF BX
32 1.30 2.06 3.58 5.52 2.44 6.40 11.58 17.68 7.32 20.12 41.63 71.15
2 64 2.44 3.85 6.80 9.76 4.19 11.56 21.04 35.09 13.89 39.95 83.02 141.92
128 4.66 7.52 11.67 18.96 8.10 22.09 41.65 69.91 27.83 79.62 165.70 283.78
32 1.29 2.08 3.57 5.55 2.51 6.44 12.05 17.66 7.47 20.19 41.68 71.13
4 64 2.37 3.86 6.77 10.73 4.27 11.27 21.93 35.03 14.14 40.07 83.09 142.10
128 4.57 7.41 13.24 21.28 7.97 22.20 41.76 69.77 28.99 79.77 165.72 283.88
32 1.28 2.08 3.55 5.54 2.30 5.85 10.71 17.76 7.63 21.03 41.76 71.20
6 64 2.38 3.86 6.72 10.77 4.28 11.38 21.10 35.05 16.27 49.36 83.31 142.09
128 4.04 7.15 12.28 19.11 9.39 23.23 41.92 69.87 29.53 80.35 165.88 283.89
32 1.28 2.09 3.53 3.20 2.55 6.16 10.79 17.73 9.00 20.49 41.85 71.31
8 64 2.40 3.91 6.83 10.71 4.61 11.71 21.28 35.15 15.65 40.79 83.40 142.23
128 4.24 6.65 11.77 21.35 8.99 22.94 42.21 70.05 31.84 81.13 166.53 284.29
32 1.29 2.13 3.57 5.59 2.81 6.16 10.83 18.53 9.28 21.21 42.10 71.37
10 64 2.42 3.74 6.95 10.21 5.83 12.40 22.27 35.24 17.69 41.64 83.84 142.55
128 4.15 6.80 11.69 19.20 10.00 23.62 42.49 70.29 131.28 175.80 258.90 372.11
Cuadro 3.3:Tiempo, en milisegundos, en realizarvl nnconv(X,F) en GPU.
M, k
4 8 64 12 16 | 4 1288 12 16 | 4 2568 12 16
B
F
,
BX
---32
2 64
128 ---32
4 64
128 ---32
6 64
128 ---32
8 64
128 ---32
10 64
128
---0.5 1 1.5 2 2.5
24 Cap´ıtulo 3. Evaluaci´on Computacional
M 64 128 256
k 4 8 12 16 4 8 12 16 4 8 12 16
BF BX
32 1.16 1.13 1.14 1.13 3.498 3.43 3.38 3.24 12.91 12.11 12.11 12.66
2 64 1.93 1.97 1.96 1.87 6.42 6.12 6.39 6.03 23.61 23.46 23.48 23.92
128 3.55 3.43 3.26 3.22 12.24 11.51 11.54 11.53 - - -
-32 1.87 1.88 1.89 1.91 6.09 6.1 6.1 5.78 23.79 22.78 22.28 22.35
4 64 3.28 3.29 3.29 3.26 11.36 11.12 10.95 11.23 108.64 108.1 109.29 107.69
128 6.1 6.07 6.06 6.05 21.71 21.62 22.53 21.24 - - -
-32 2.54 2.52 2.53 2.56 8.17 8.17 8.72 8.7 81.35 81.79 80.72 81.65
6 64 4.59 4.59 4.62 4.61 16.05 15.74 15.65 15.73 222.2 221.15 220.26 223.66
128 8.1321 8.64 8.66 8.08 82.35 79.44 78.79 80.67 - - -
-32 3.23 3.16 3.24 5.55 11.27 11.3 10.84 10.61 112 109.17 107.55 112.39
8 64 5.89 6 5.9 5.89 21.45 21.66 20.55 20.61 - - -
-128 11.27 10.56 10.99 11.32 105.76 105.57 106.18 107.18 - - -
-32 3.89 3.9 3.88 3.89 13.98 13.3 13.08 13.91 135.97 136.9 134.62 134.72
10 64 7.27 7.25 6.41 6.92 66.96 67.55 67.32 65.05 - - -
-128 13.44 13.01 12.99 12.97 133.33 130.64 129.44 125.76 - - -
-Cuadro 3.4:Tiempo, en milisegundos, en realizarfft conv(X,F) en GPU.
M, k
4 8
64
12 16 | 4 8
128
12 16 | 4 8
256
12 16
B
F
B
X
---32
2 64
128 ---32
4 64
128 ---32
6 64
128 ---32
8 64
128 ---32
10 64
128
---1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6
3.3. Convoluci´on 25
M 64 128 256
k 4 8 12 16 4 8 12 16 4 8 12 16
BF BX
32 0.63 0.63 0.63 0.63 1.31 1.31 1.31 1.31 4.07 4.07 4.07 4.07
2 64 0.924 0.924 0.924 0.924 2.22 2.22 2.22 2.22 7.54 7.54 7.54 7.54
128 1.43 1.43 1.43 1.43 3.99 3.99 3.99 3.99 80 80 80 80
32 0.93 0.93 0.93 0.93 2.22 2.22 2.22 2.22 7.62 7.62 7.62 7.62
4 64 1.4 1.4 1.4 1.4 3.97 3.97 3.97 3.97 79.43 79.43 79.43 79.43
128 2.36 2.36 2.36 2.36 7.42 7.42 7.42 7.42 - - -
-32 1.19 1.19 1.19 1.19 3.12 3.1215 3.12 3.13 74 74 74 74
6 64 1.92 1.92 1.92 1.92 5.7 5.7 5.7 5.7 143 143 143 143
128 3.28 3.28 3.28 3.28 60.69 60.69 60.69 60.69 - - -
-32 1.52 1.52 1.52 1.52 3.96 3.96 3.96 3.96 81.37 81.37 81.37 81.37
8 64 2.36 2.36 2.36 2.36 7.4 7.4 7.4 7.4 - - -
-128 4.13 4.13 4.13 4.13 78.8 78.8 78.8 78.8 - - -
-32 1.74 1.74 1.74 1.74 4.86 4.86 4.86 4.86 101.98 101.98 101.98 101.98
10 64 2.88 2.88 2.88 2.88 50.99 50.99 50.99 50.99 - - -
-128 5.19 5.19 5.19 5.19 99.43 99.43 99.43 99.43 - - -
-Cuadro 3.5:Tiempo, en milisegundos, en realizarsfft conv(X,F) en GPU.
M, k
4 8
64
12 16 | 4 8
128
12 16 | 4 8
256
12 16
B
F
, B
X
---32
2 64
128 ---32
4 64
128 ---32
6 64
128 ---32
8 64
128 ---32
10 64
128
--- -1
-0.5 0 0.5 1
Figura 3.9: log10(vl nnconv/sfft conv)
3.3.1.
Discusi´
on de resultados
La tabla nos muestra resultados importantes acerca de los tiempos de cada uno de los algorit-mos propuestos frente a la implementaci´on directa de convoluci´on por MatConvNet. El tiempo de ejecuci´on para una convoluci´on por mediovl nnconvincrementa conforme aumentan la dimensi´on de las im´agenesM, la dimensi´on del filtrok, el tama˜no del batch de las im´agenesBX, y el tama˜no
del batchBF. Este incremento es un resultado coherente, pues hay m´as entradas sobre las que toca
hacer operaciones. Tambi´en se puede ver que, entre todas las variables que influyen sobre el entre-namiento, la dimensi´on de las im´agenes,M, es la que m´as incrementa el tiempo de ejecuci´on. Esto sugiere que, el entrenar una banco de im´agenes por redes convolucionales, hay que dar atenci´on especial a la dimensi´on en el que se encuentran las im´agenes. El primer mapa de colores resalta este
26 Cap´ıtulo 3. Evaluaci´on Computacional
hecho mostrando los tiempos m´as grandes (colores claros) a medida que aumenta M, k, BX, BF y
tiempos relativamente cortos (colores oscuros) en el caso contrario.
La implementaci´on devl nnconvsobre las GPU y CPU descritas al comienzo de esta secci´on favorecen al tiempo consumido por la GPU. Este hecho es plausible y obedece a la naturaleza lineal de la convoluci´on que es aprovechada al m´aximo por implementaciones r´apidas lineales en paralelo. El lector interesado puede mirar la documentaci´on de CUBLAS. Una de las consecuencias de realizar la convoluci´on en el dominio frecuencial es que la complejidad permanece inalterada a variaciones dek(ver 2.4). Esto se hace evidente en el segundo mapa de colores y la segunda tabla. De esta manera, aunque para tama˜nos de kernelk peque˜nos sea m´as r´apido hacer la convoluci´on directa, la FFT nos da la posibilidad de utilizar kerneles m´as grandes sin sacrificar m´as tiempo. En la mayor´ıa de casos, resulta ser m´as conveniente utilizarfft convquevl nnconv, puede observarse los cuadros que est´an en azul en el segundo y tercer mapa. Sin embargo, este umbral depende tambi´en de M, BX y BF. Esta dependencia se aten´ua con la implementaci´on de sfft, pues en
principio, las im´agenes m´as grandes resultar´an ser m´as dispersas y por lo tanto no ser´a necesario calcularFn(X) sinoFk(Sk(X)).
3.4.
Entrenamiento de redes
Luego de analizar el comportamiento de las capas convolucionales, procederemos a entrenar varias arquitecturas de redes convolucionales sobre todas los bancos de datos. Para tal fin, pro-cedimos a entrenar cada uno de la escogencias de (M, k, BX, BF) que se utilizaron en la secci´on
de convoluci´on y aqu´ı reportamos los resultados de la mejor implementaci´on. Se comparar´an los tiempos y frecuencia de error para la mejor red entrenada con: la versi´on en GPU devl nnconv,
fft conv, ysfft conv.
3.4.1.
DTD
La red que mejor dio resultados fue:
Capa Conv bnorm max Conv Bnorm max Conv ReLu SoftMax
64 8 1 3 4 1 3 5 1 1
Batch 2 2 2 16 16 16 16 47 1
Cuadro 3.6: Red para elDTDen dimensi´on 64×64.
Velocidad devl nnconv:759 Hz Velocidad de sfft conv:977 Hz
training epoch 0 10 20 30 40 50
energy 3 3.2 3.4 3.6 3.8 4 objective train val training epoch 0 10 20 30 40 50
error 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 error traintop1err traintop5err valtop1err valtop5err training epoch
0 20 40 60 80 100
energy 3.62 3.64 3.66 3.68 3.7 3.72 3.74 3.76 objective train val training epoch
0 20 40 60 80 100
error 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 error traintop1err traintop5err valtop1err valtop5err
3.4. Entrenamiento de redes 27
Capa Conv bnorm max Conv Bnorm max Conv ReLu SoftMax
128 12 1 6 4 1 4 4 1 1
Batch 2 2 2 16 16 16 16 47 1
Cuadro 3.7:Red para elDTDen dimensi´on 128×128.
Velocidad de vl nnconv: 34 Hz Velocidad desfft conv: 95 Hz
training epoch 0 10 20 30 40 50
energy 2.9 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 objective train val training epoch 0 10 20 30 40 50
error 0.4 0.5 0.6 0.7 0.8 0.9 1 error traintop1err traintop5err valtop1err valtop5err training epoch 0 10 20 30 40 50
energy 2.9 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 objective train val training epoch 0 10 20 30 40 50
error 0.4 0.5 0.6 0.7 0.8 0.9 1 error traintop1err traintop5err valtop1err valtop5err
Figura 3.11:Desempe˜novl nnconv(izquierda) contrasfft conv(derecha).
3.4.2.
KTH
La red que mejor dio resultados fue:
Capa Conv bnorm max Conv ReLu SoftMax
64 8 1 5 11 1 1
Batch 2 2 2 15 15 1
Cuadro 3.8:Red para elDTDen dimensi´on 64×64.
Velocidad de vl nnconv:500 Hz Velocidad desfft conv: 3 kHz
training epoch 0 20 40 60 80 100
energy 1.8 2 2.2 2.4 2.6 2.8 3 objective train val training epoch 0 20 40 60 80 100
error 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 error traintop1err traintop5err valtop1err valtop5err training epoch 0 20 40 60 80 100
energy 1.8 1.9 2 2.1 2.2 2.3 2.4 2.5 objective train val training epoch 0 20 40 60 80 100
error 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 error traintop1err traintop5err valtop1err valtop5err
28 Cap´ıtulo 3. Evaluaci´on Computacional
Capa Conv bnorm max Conv Bnorm max Conv Bnorm max Conv ReLu SoftMax
128 16 1 3 4 1 3 4 1 3 2 1 1
Batch 2 2 2 2 2 2 2 2 2 15 15 1
Cuadro 3.9: Red para elKTHen dimensi´on 128×128.
Velocidad devl nnconv:60 Hz Velocidad de sfft conv:711 Hz
training epoch 0 20 40 60 80 100
energy
100 101
102 objective
train val
training epoch 0 20 40 60 80 100
error 0.3 0.4 0.5 0.6 0.7 0.8 0.9 error traintop1err traintop5err valtop1err valtop5err training epoch 0 50 100 150 200
energy
10-1 100
101
102 objective
train val
training epoch 0 50 100 150 200
error 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 error traintop1err traintop5err valtop1err valtop5err
Figura 3.13:Desempe˜novl nnconv(izquierda) contrasfft conv(derecha).
3.4.3.
Kylberg
La red que mejor dio resultados fue:
Capa Conv bnorm max Conv ReLu SoftMax
64 12 1 4 13 1 1
Batch 2 2 2 15 15 1
Cuadro 3.10:Red para elDTDen dimensi´on 64×64.
Velocidad devl nnconv:227 Hz Velocidad de sfft conv:657 Hz
training epoch 0 50 100 150
energy 10-3 10-2 10-1 100 101
102 objective
train val
training epoch 0 50 100 150
error 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 error traintop1err traintop5err valtop1err valtop5err training epoch 0 20 40 60 80 100 120
energy 100 objective train val training epoch 0 20 40 60 80 100 120
error 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 error traintop1err traintop5err valtop1err valtop5err
3.4. Entrenamiento de redes 29
Capa Conv bnorm max Conv Bnorm max Conv Bnorm max Conv ReLu SoftMax
128 12 1 3 4 1 3 4 1 3 3 1 1
Batch 2 2 2 20 20 20 20 20 20 19 19 1
Cuadro 3.11:Red para elKylebergen dimensi´on 128×128.
Velocidad de vl nnconv: 88 Hz Velocidad desfft conv: 462 Hz
training epoch 0 20 40 60 80 100
energy 100 objective train val training epoch 0 20 40 60 80 100
error 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 error traintop1err traintop5err valtop1err valtop5err training epoch 0 20 40 60 80 100
energy 0.6 0.8 1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 objective train val training epoch 0 20 40 60 80 100
error 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 error traintop1err traintop5err valtop1err valtop5err
Figura 3.15:Desempe˜novl nnconv(izquierda) contrasfft conv(derecha).
3.4.4.
Retinopat´ıa Diab´
etica
La red que mejor dio resultados fue:
Capa Conv bnorm max Conv SoftMax
64 8 1 10 5 1
Batch 2 2 2 15 1
Cuadro 3.12:Red para elDiabetic Retinopathy en dimensi´on 64×64.
Velocidad de vl nnconv:932 Hz Velocidad desfft conv:2.3 kHz
training epoch 0 20 40 60 80 100
energy 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 2.1 objective train val training epoch 0 20 40 60 80 100
error 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 error traintop1err traintop5err valtop1err valtop5err training epoch 0 20 40 60 80 100
energy 1 1.5 2 2.5 3 3.5 objective train val training epoch 0 20 40 60 80 100
error 0 0.1 0.2 0.3 0.4 0.5 0.6 error traintop1err traintop5err valtop1err valtop5err
30 Cap´ıtulo 3. Evaluaci´on Computacional
Capa Conv bnorm max Conv Bnorm max Conv max Conv SoftMax
128 8 1 3 4 1 3 4 3 3 1
Batch 2 2 2 4 4 4 8 8 15 1
Cuadro 3.13:Red para elDiabetic Retinopathyen dimensi´on 128×128.
Velocidad devl nnconv:168 Hz Velocidad de sfft conv:697 Hz
training epoch 0 20 40 60 80 100
energy 1 1.2 1.4 1.6 1.8 2 objective train val training epoch 0 20 40 60 80 100
error 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 error traintop1err traintop5err valtop1err valtop5err training epoch 0 20 40 60 80 100
energy 1 1.2 1.4 1.6 1.8 2 objective train val training epoch 0 20 40 60 80 100
error 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 error traintop1err traintop5err valtop1err valtop5err
Figura 3.17:Desempe˜novl nnconv(izquierda) contrasfft conv(derecha).
3.4.5.
STL
La red que mejor dio resultados fue:
Capa Conv bnorm max Conv Bnorm max Conv SoftMax
64 12 1 3 12 1 3 5 1
Batch 2 2 2 4 4 4 10 1
Cuadro 3.14:Red para elstlen dimensi´on 96×96.
Velocidad devl nnconv:170 Hz Velocidad de sfft conv:787 Hz
training epoch 0 10 20 30 40 50
energy 1.4 1.5 1.6 1.7 1.8 1.9 objective train val training epoch 0 10 20 30 40 50
error 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 error traintop1err traintop5err valtop1err valtop5err training epoch 0 20 40 60 80 100
energy 1.4 1.5 1.6 1.7 1.8 1.9 objective train val training epoch 0 20 40 60 80 100
error 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 error traintop1err traintop5err valtop1err valtop5err
3.4. Entrenamiento de redes 31
3.4.6.
Discusi´
on de Resultados
Mientras que la velocidad de entrenamiento fue notoriamente mayor para el entrenamiento de las redes en todos los casos, los errores de generalizaci´on obtenidos del entrenamiento de las redes en tanto vl nnconv como sfft conv fueron parecidos. As´ı mismo, los errores de entrenamiento de las redes fueron semejantes entre s´ı en todos los casos salvo por una excepciones. Por ejemplo, para la base DTDla implementaci´on dispersa obtuvo un error de entrenamiento m´as acorde al error de generalizaci´on y por lo tanto no se present´o overfitting a diferencia de la implementaci´on directa. En otros casos –como la baseKTHen dimensi´on 128 y la baseDiabetic Retinopathy en dimensi´on 64, – ocurri´o el fen´omeno inverso: el error de entrenamiento no se diferenci´o del error de generalizaci´on.
El error cuadr´atico medio tambi´en fue similar para ambas formas de entrenar la red, pero el mismo error, para el conjunto de validaci´on, fue notoriamente mejor en el caso disperso. Esto nos sugiere que la red en el caso disperso tiene un comportamiento m´as robusto en t´erminos de con-vergencia. Probablemente, esto es consecuencia de que, por una lado, entrenar por medio de la red dispersa es equivalente a realizar un filtro sobre la imagen que elimina frecuencias peque˜nas que ayuda para la clasificaci´on y, por otro lado, la capa dispersa no es completamente lineal (al no ser la transformada completa) y por ende puede pensarse que hace el papel de capa lineal y capa no lineal al mismo tiempo.
Las gr´aficas demuestran que el aprendizaje basado en redes convolucionales por medio una transformada dispersa es posible y adem´as tiene consecuencias favorables. Dado que el tiempo de entrenamiento es mucho menor y el error de generalizaci´on, en muchos casos, es similar o menor al error de generalizaci´on usual, entonces una posible utilidad de esta red es utilizarla para estimar el error real de generalizaci´on al entrenar una red con la convoluci´on directa, en un tiempo mucho menor. Otra posible aplicaci´on es reemplazar del todo la primera capa convolucional por la capa dispersa y enfocarse en tratar de sintonizar esta red para obtener mejores resultados.