Beruflich Dokumente
Kultur Dokumente
por
Supervisada por:
INAOE
c 2015
El autor otorga al INAOE el permiso de reproducir y distribuir copias
en su totalidad o en partes de esta tesis
Realización FPGA de una Red Neuronal Artificial
para Reproducir Comportamiento Caótico
Tesis de Maestrı́a
Por:
Asesores:
Dr. Esteban Tlelo Cuautle
Dr. Carlos Sánchez López
i
ii
Agradecimientos
iii
Agradecimientos
iv
Resumen
v
Resumen
vi
Abstract
There are a large number of natural phenomena that exhibit a chaotic behavior.
In Engineering, the chaotic systems are attractive research fields that involve the
generation of new models, the realization with different electronic circuits, etc. A
chaotic system exhibits a random behavior, because of its unpredictable dynamics
and sensitivity to initial conditions, which make it hard reproduce the behavior of
these systems.
The main objective of this thesis is the experimental realization of an artificial
neural network (ANN) on an FPGA to reproduce time series which are obtained from
chaotic oscillators.
The ANNs have the ability to learn from experience and they can be modified
according to their environment changes, they are used to solve complex problems and
they can be adjusted from the simplest to the most complex pattern, depending on
the nature and complexity of the problem addressed.
In this work, 2 ANNs topologies based on the pyramid geometric rule and an
ANN topology given by (Sprott, 2014) are presented. Experiments are presented to
determine the RNA topology that exhibit a better performance. Finally, the FPGA
implementation of the selected RNA is presented, to reproduce a chaotic time series.
vii
Abstract
viii
Tabla de Contenido
Agradecimientos III
Resumen V
Abstract VII
1. Introducción 1
1.1. Planteamiento del problema . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1. Objetivo general . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2. Objetivos especı́ficos . . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Organización de la tesis . . . . . . . . . . . . . . . . . . . . . . . . . 4
ix
TABLA DE CONTENIDO
x
6. Realización en FPGA de una RNA 67
6.1. Realización en FPGA de la función de activación tangente hiperbólica 67
6.2. Sı́ntesis en hardware de la RNA de 6 capas . . . . . . . . . . . . . . . 69
6.2.1. Sı́ntesis en FPGA de la primera capa . . . . . . . . . . . . . . 70
6.2.2. Sı́ntesis en FPGA para la segunda capa . . . . . . . . . . . . . 72
6.2.3. Sı́ntesis en FPGA para la tercera capa . . . . . . . . . . . . . 72
6.2.4. Sı́ntesis en FPGA para la cuarta capa . . . . . . . . . . . . . . 74
6.2.5. Sı́ntesis en FPGA para la quinta capa . . . . . . . . . . . . . . 75
6.2.6. Sı́ntesis en FPGA para la sexta capa . . . . . . . . . . . . . . 76
6.3. Transmisión de datos de entrada empleando comunicación serial . . . 77
6.4. Resultados experimentales . . . . . . . . . . . . . . . . . . . . . . . . 80
6.5. Resumen del capı́tulo . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Apéndices 85
B. Publicaciones 91
Bibliografı́a 93
xi
TABLA DE CONTENIDO
xii
Lista de Figuras
xiii
LISTA DE FIGURAS
xiv
5.14. Disminución del número de épocas modificando la función de activación
de la ultima capa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.15. Respuesta del número de epoch para cada RNA . . . . . . . . . . . . 63
5.16. Respuesta del tiempo empleado para cada RNA . . . . . . . . . . . . 64
5.17. Respuesta del MSE para cada RNA . . . . . . . . . . . . . . . . . . 64
5.18. Respuesta del tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.19. Respuesta de MSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
xv
LISTA DE FIGURAS
xvi
Lista de Tablas
xvii
LISTA DE TABLAS
xviii
Lista de Acrónimos
LR Rango de aprendizaje
MC Constante de momento
FE Forward Euler
xix
Lista de Acrónimos
RK Runge Kutta
EL Exponente de Lyapunov
ERG Electrorretinograma
xx
Capı́tulo 1
Introducción
Un sistema caótico puede ser descrito como aquel que presenta un comportamiento
dinámico, sensible a las condiciones iniciales y determinista; su comportamiento puede
ser modelado por un conjunto de ecuaciones sujetas a condiciones iniciales, generando
formas de onda aleatorias en el dominio del tiempo [4]. Estas caracterı́sticas hacen
que sea muy difı́cil predecir su comportamiento. Por otra parte, para caracterizar
y/o predecir el comportamiento de cualquier forma de onda aleatoria y/o periódica a
partir de datos experimentales, instrumentos de medición son usados para adquirir los
datos. Sin embargo, existirá un error debido a la precisión en la lectura de datos. Estos
errores aunque sean pequeños, alteran significativamente la capacidad de estimar las
condiciones futuras asociadas con una trayectoria caótica [5].
Debido a que muchos fenómenos naturales presentan un comportamiento caóti-
co, diversas áreas de la ciencia como: la medicina, biologı́a, economı́a y el campo de
las comunicaciones, presentan un gran interés en la predicción de series de tiempo
caóticas. En este contexto, las RNAs han sido usadas no solamente para el análisis y
procesamiento de señales médicas, detección de sistemas de comunicación inalámbri-
cos o reconocimiento de patrones, sino también en la predicción de señales variantes
en el tiempo con un alto grado de impredicibilidad. Como un ejemplo, en [6, 7], se ha
demostrado que una RNA es capaz de aproximar el comportamiento de un sistema
dinámico con un nivel bajo de error, ya que tiene la capacidad de auto-ajustarse con
su entorno.
Una RNA, básicamente, esta compuesta por una capa de neuronas de entrada,
una capa de neuronas de salida, capas de neuronas ocultas o intermedias y los pe-
sos asociados a las interconexiones entre las neuronas de cada capa de neuronas. El
número de neuronas de la capa de entrada depende del tamaño del vector de datos
de entrada y el número de neuronas en la capa de salida depende del número de
1
1. Introducción
objetivos. Sin embargo, el número de capas ocultas y neuronas asociados a cada capa
no esta claramente definido y, a menudo, depende del problema a resolver. En este
sentido, un gran número de investigadores han propuesto diversas metodologı́as para
fijar el número de neuronas ocultas. En [8] se muestra de manera cronológica diversos
métodos para calcular el número de neuronas ocultas en una RNA. Sin embargo,
la mayorı́a de estos métodos fueron propuestos dependiendo de la complejidad del
problema a resolver. Una metodologı́a que permite una buena aproximación para la
elección del número de neuronas ocultas es la regla de la pirámide geométrica, don-
de el número de neuronas sigue una forma piramidal teniendo una disminución del
número de neuronas de la entrada a la salida, es decir, el número de neuronas en la
capa oculta debe ser menor al número de neuronas de la entrada [9]. Con respecto al
entrenamiento de una RNA, los factores más importantes a considerar son: algoritmo
de aprendizaje y función de activación asociado a cada neurona.
2
capaz de resolver un problema en particular.
El diseño de RNAs se divide en dos categorı́as: software y hardware [13]. En
un software ad hoc se entrena y simula una RNA en ordenadores secuenciales para
emular su comportamiento con una flexibilidad inherente. Por otro lado, el diseño en
hardware permite verificar el funcionamiento de una RNA y aprovechar el paralelismo
del hardware. La realización VHDL de una RNA proporciona una alta velocidad en
aplicaciones en tiempo real [13]. No obstante, este tipo de aplicaciones carece de
flexibilidad para la modificación estructural y representan un costo alto de recursos.
Numerosas investigaciones hacen uso de FPGAs para el diseño de RNAs debido a que
[13]:
1.2. Objetivos
Diseñar y simular en MATLAB, una RNA del tipo feed-forward para reproducir
comportamiento caótico.
3
1. Introducción
4
Capı́tulo 2
f (x) = f (x + d) + (2.0.1)
donde d representa el periodo de repetición del patrón, f (.) una función arbi-
traria y representa el ruido blanco [15].
5
2. Series de tiempo caóticas
Xt = Tt + Et + It (2.1.1)
Xt = Tt · Et · It (2.1.2)
Xt = Tt · Et + It (2.1.3)
6
Componente tendencia. Se define como un cambio a largo plazo de la media. Se
identifica con un movimiento suave de la serie a largo plazo.
ẋ = y
ẏ = z (2.2.1)
ż = −ax − by − cz + d1 f (x; α, k, h, p, q)
p
X
f (x; α, k, h, p, q) = fi (x; h, k) (2.2.2)
i=−p
7
2. Series de tiempo caóticas
k x<α
f (x) = s(x) −α ≤ x ≤ α (2.2.3)
−k x < −α
8
En este caso xn , yn , zn corresponden al valor de las condiciones iniciales, a = b = c =
d1 = 0.7 son las constantes, ∆t el tamaño de paso, m el valor de las pendientes y α los
puntos de quiebre. En caso de generar un oscilador caótico de múltiples enrollamientos
el número de condiciones que describen a la SNLF incrementará.
9
2. Series de tiempo caóticas
1.5 3
1 2
0.5 1
0 0
y
−0.5 −1
−1 −2
−1.5 −3
−3 −2 −1 0 1 2 3 0 1 2 3 4 5
x Tiempo (s) 4
x 10
(a) (b)
1.5 1.2
1 0.8
0.5 0.4
0 0
−0.5 −0.4
−1 −0.8
−1.5 −1.2
0 1 2 3 4 5 0 1 2 3 4 5
Tiempo (s) 4 Tiempo (s) 4
x 10 x 10
(c) (d)
Figura 2.2: Formas de onda caóticas de dos enrrollamientos. (a) x vs y en el plano de fase; serie
temporal caótica de la variable: (b) x, (c) y, (d) z
10
Negativo. Las trayectorias tienden a aproximarse entre sı́.
11
2. Series de tiempo caóticas
3 3
2 2
1 1
0 0
y
−1 −1
−2 −2
−3 −3
−3 −2 −1 0 1 2 3 0 1 2 3 4 5
Tiempo (s) 4
x x 10
(a) (b)
3 3
2 2
1 1
0 0
−1 −1
−2 −2
−3 −3
0 1 2 3 4 5 0 1 2 3 4 5
Tiempo (s) 4 Tiempo (s) 4
x 10 x 10
(c) (d)
Figura 2.3: Formas de onda caóticas de dos enrrollamientos con EL=0.3761. (a) x vs y en el plano de
fase; serie temporal caótica de la variable: (b) x, (c) y, (d) z
12
0.6 0.8
0.6
0.4
0.4
0.2
0.2
0 0
y
−0.2
−0.2
−0.4
−0.4
−0.6
−0.6 −0.8
−0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 0 1 2 3 4 5
x Tiempo (s) 4
x 10
(a) (b)
0.6 0.4
0.3
0.4
0.2
0.2
0.1
0 0
−0.1
−0.2
−0.2
−0.4
−0.3
−0.6 −0.4
0 1 2 3 4 5 0 1 2 3 4 5
Tiempo (s) 4 Tiempo (s) 4
x 10 x 10
(c) (d)
Figura 2.4: Formas de onda caóticas de dos enrrollamientos con EL=0.3425. (a) x vs y en el plano de
fase; serie temporal caótica de la variable: (b) x, (c) y, (d) z
13
2. Series de tiempo caóticas
14
Capı́tulo 3
Realización en hardware de un
oscilador caótico
15
3. Realización en hardware de un oscilador caótico
xn+1 = xn + ∆t yn
yn+1 = yn + ∆t zn (3.0.2)
zn+1 = zn + ∆t (−axn − byn − czn + d1 f (xn ))
16
3.1. Descripción VHDL del oscilador caótico ba-
sado en SNLF
Los cálculos de suma y producto se realizan a partir de bloques básicos de cons-
trucción mostrados en la figura 3.2.
(a) (b)
17
3. Realización en hardware de un oscilador caótico
La sı́ntesis de las variables xn+1 y yn+1 resulta ser sencilla de realizar, debido a que
solo es necesario el bloque SMC para 0.01 y un sumador. En la figura 3.5 se muestra el
diagrama a bloques para ambas variables, donde xn y yn son las condiciones iniciales
y xn+1 y yn+1 los resultados de las operaciones.
De las figuras 3.4 y 3.5 se puede observar que la trayectoria lógica de xn+1 y yn+1
18
son menores en comparación a zn+1 . Por lo tanto, la señal de salida de xn+1 y yn+1
se obtiene utilizando menor número de ciclos de reloj (clk). Es necesario agregar un
contador el cual genere una señal de activación denomina LDA que sea activada cada
8 ciclos de reloj (ciclos necesarios para obtener la salida de zn+1 ). Los bloques que
modelan a xn+1 , yn+1 y zn+1 son unidos para formar el bloque mostrado en la figura
3.6.
Al bloque Oscillator se le agregan tres multiplexores cuya función de selección es
la señal P , en un inicio cuando P = 0 se cargaran los datos de las condiciones iniciales,
una vez que se obtengan los primeros datos a la salida del bloque Oscillator, P = 1 y
los datos obtenidos a la salida del registro serán re-alimentados a los multiplexores.
Esta acción permite tener al sistema dentro de un bucle que permita la solución del
sistema de ecuaciones descrita por (3.0.2).
19
3. Realización en hardware de un oscilador caótico
los retardos pueden realizarse usando hard-wire shifts [26]. Por otro lado, al realizar la
multiplicación mediante sumas y restas se obtiene un aumento de velocidad y ahorro
de recursos de procesamiento.
En la figura 3.7 se muestra la realización de y = 71x empleando SCM y se puede
observar el uso de 3 sumadores. Supongamos que x = 012 , realizando cada uno de los
corrimientos se obtiene: x << 6 = 010000002 , x << 2 = 01002 y x << 1 = 0102 . La
suma de los 3 corrimientos es 010001102 = 7010 y finalmente la suma de 7010 + x =
010001112 = 7110 .
En muchos sistemas digitales los multiplicadores son uno de los principales com-
ponentes que determinan el rendimiento del sistema. Debido a que los multiplicadores
consumen una gran cantidad de recursos de procesamiento y son uno los bloques más
lentos, el uso mı́nimo de estos conlleva a un mejor rendimiento. En esta tesis se hace
uso de multiplicadores SCM, ya que, como se puede observar en (3.0.2) y (2.2.1),
es posible implementar el uso de SCM debido a que el valor de a, b, c, d1 = 0.7 y
∆t = 0.01 son constantes de punto fijo. Para obtener de manera sencilla los bloques
que conforman a los SCMs se hace uso de la herramienta disponible en [27]. En la
figura 3.8 se muestra los SCMs empleados.
Al sustituir los SCMs en el bloque mostrado en la figura 3.4, se obtiene el bloque
mostrado en la figura 3.9. Para diseñar las variables xn+1 y yn+1 , los multiplicadores
son modificados por el SCM mostrado en la figura 3.8(a).
20
<<3
8x
+ <<10
41x 41984x
x <<5 + -
32x
41943x
Y1
33x
(a) (b)
(c)
Figura 3.8: Diagrama de SCMs. (a) multiplicación por 0.0110 , (b) multiplicación por 0.710 , (c) multi-
plicación por −0.710
21
3. Realización en hardware de un oscilador caótico
Tabla 3.3 muestra los recursos del FPGA utilizados para sintetizar un oscilador
caótico de 2 enrollamientos y la Fmax a la que el diseño trabajará al máximo. Se
observa que con el uso de multiplicadores de 2 variables se obtiene una menor Fmax de
operación a diferencia de SCM, es decir, el sistema alcanzará una mayor frecuencia de
operación utilizando SCM. En la figura 3.11 se muestran los resultados experimentales
de un oscilador caótico de 2 enrollamientos.
22
(a) (b)
Figura 3.11: Resultados experimentales del oscilador caótico de 2 enrollamientos. (a) plano de fase,
(b) CH1=Señal x, CH2=señal y
23
3. Realización en hardware de un oscilador caótico
24
Capı́tulo 4
Soma
Dentritas
Axón
Sinápsis
El impulso que llega a una sinapsis y el que sale de ella no son iguales. El tipo
de pulso que saldrá depende muy sensiblemente de la cantidad de neurotrans-
misor (cantidad que cambia durante el proceso de aprendizaje, es aquı́ donde
se almacena la información). Una sinapsis modifica el pulso ya sea reforzándolo
o debilitándolo.
25
4. Redes neuronales artificiales
Para establecer una similitud entre la actividad sináptica y la analogı́a con las
RNAs, se considera que las señales que llegan a la sinapsis son las entradas a la neu-
rona las cuales son ponderadas (atenuadas o simplificadas) a través de un parámetro
denominado peso, el cual esta asociado a la sinapsis correspondiente. Estas señales
de entrada pueden excitar a la neurona (sinapsis con peso positivo) o inhibirla (peso
negativo) [28].
Las RNAs son sistemas de procesamiento de información de distribución paralela
y se realizan con elementos simples que operan en paralelo; se caracterizan por su
patrón de conexiones entre las neuronas (arquitectura), el método para determinar el
peso en las conexiones (entrenamiento, aprendizaje, etc.,) y su función de activación
[29].
El poder de las técnicas neuronales es debido a que, por su estructura y fun-
cionalidad, pueden ser asimilados a los modelos no lineales y se caracterizan por la
flexibilidad y mı́nimo esfuerzo requerido para la resolución de problemas llevando
acabo cálculos numéricos elementales [30]. Además de estas caracterı́sticas, en [28] se
presentan las ventajas y desventajas de las RNAs frente a otros sistemas de procesa-
miento de información, los cuales se mencionan en la tabla 4.1.
26
Tabla 4.1: Ventajas y desventajas del uso de las RNAs
Ventajas Desventajas
• Sintetizan algoritmos a través • Se debe entrenar para cada
de un proceso de aprendizaje. problema.
• El entrenamiento es largo y
• Permite la solución de
puede consumir varias horas de
problemas no lineales.
computo.
27
4. Redes neuronales artificiales
y = f (u) (4.2.4)
28
Función de activación de umbral (función escalón unitario). Si la suma de las
entradas es mayor o igual que el umbral de la neurona, la activación es 1, en
caso contrario, la activación es 0.
1 cuando u > 0
Y
φ(u) =
0 en otro caso
0
0
X
0 φ(u) = u
Y
0
X
29
4. Redes neuronales artificiales
a
0.5 φ(u) =
Y
1 + exp(−bu)
0
0
X
más importante la velocidad que la forma exacta de la función [32]. Está función
es empleada en casos en que la señal presente variaciones suaves de valores posi-
tivos y negativos de la señal a clasificar, es una de las funciones más empleadas
en entrenamientos supervisados.
0
eu − e−u
Y
φ(u) =
eu + e−u
−1
0
X
30
4.4.1. Aprendizaje no-supervisado
No incorpora a un maestro externo, se basa en una información local y control
interno. El entrenamiento se enfoca a encontrar caracterı́sticas estadı́sticas entre agru-
pamientos de patrones en las entradas. En la tabla 4.2 se muestran algunos de los
esquemas más representativos de este tipo de aprendizaje.
31
4. Redes neuronales artificiales
32
entrenar adecuadamente en un perı́odo de tiempo razonable y causar sobre-ajuste (la
RNA tendrá tanta capacidad de procesamiento de la información que va a aprender
aspectos insignificantes del conjunto de entrenamiento, aspectos que son irrelevantes)
[9].
En [34] se muestran dos ejemplos de sub-ajuste y sobre-ajuste. Figura 4.3 muestra
3 posibles casos que ocurren al realizar la predicción del precio de una casa a partir de
su tamaño. Como se puede observar para el caso de la figura 4.3(a) se tiene un caso
de sub-ajuste; en la figura 4.3(c) se tiene un caso de sobre-ajuste. La RNA realiza
una adecuada predicción del conjunto de datos de entrenamiento, sin embargo no
generaliza bien para hacer predicciones exactas sobre nuevos ejemplos, nunca antes
vistas. Finalmente en el caso de la figura 4.3(b), se obtiene una respuesta satisfactoria
[34].
Precio
Precio
Tamaño
33
4. Redes neuronales artificiales
2006, K. Jinchuan
√ and L. Xinzhe investigaron una formula probada en 40 casos:
Np
Nh = Nin + L , donde L es el número de capas intermedias, Nin el número
de neuronas de entrada y Np el número de muestras de entradas
Primer caso
Se considera una RNA de 3 capas con una sola capa oculta, una neurona en la
salida (m = 1) y cuatro neuronas a la entrada (n = 4), para determinar el número
de neuronas en la capa oculta se considera:
√
h= m·n=2 (4.5.1)
Out
Inputs
1 2 3
34
Segundo caso
Se considera una RNA de 4 capas (2 capas ocultas), una neurona en la salida
(m = 1) y 8 neuronas a la entrada (n = 8). Para determinar el número de neuronas
se utiliza:
h1 = m · r2
h2 = m · r (4.5.2)
r
n
r= 3
m
Out
Inputs
1 2 3 4
35
4. Redes neuronales artificiales
Out
1 2 3 4 5 6
36
4.6. Técnicas de actualización de pesos
En los primeros dı́as de las redes neuronales el entrenamiento por lotes se sospecho
por muchos investigadores a ser teóricamente superior al entrenamiento incremental
[35], por lo que un mito muy frecuente en redes neuronales es que el método por
lotes es mas rápido que el método incremental debido a que se supone usa una me-
jor aproximación del gradiente para la actualización de los pesos [36]. Sin embargo,
algunas veces el entrenamiento por por lotes es también lento como el entrenamiento
incremental. Esto es por la capacidad de entrenamiento del método incremental para
seguir las curvas de la superficie de error a lo largo de cada época, lo que le permite
utilizar de forma segura una tasa de aprendizaje más grande y por lo tanto con menos
iteraciones convergen a través de los datos de entrenamiento [36].
esta es la medida de error asociado con la última capa de la red neuronal, después
se distribuye este error a los elementos en las capas ocultas usando la técnica de
retro-propagación [37]. La medida de error asociado con los diferentes elementos en
las capas ocultas se calcula a partir de:
En = F 0 (I)wij Ej (4.6.2)
37
4. Redes neuronales artificiales
activación [37]. En la figura 4.7 se muestra la distribución del error a los diferentes
elementos.
Después los diferentes pesos wi j conectados a cada uno de los elementos de la red
se corrigen para que puedan aproximar la salida final; para actualizar los pesos se
utiliza la medida de error en los elementos. Para un elemento con error (E) asociado
con él (figura 4.8), los pesos asociados se actualizarán de acuerdo a:
38
Figura 4.9: Ejemplo de entrenamiento de una RNA de [2 × 3 × 2]
1
O= P (4.6.4)
1 + exp [− ( xi wi + t)]
donde:
O = Salida del elemento de umbral calculado usando una función sigmoide.
xi = entradas al elemento de umbral (i = 1, 2, ..., n).
wi = Pesos asociados a la trayectoria de cada elemento
t = Polarización del elemento, en este caso t = 0.
39
4. Redes neuronales artificiales
1
O12 = = 0.507249
1 + exp(−[(0.05 × 0.50) + (0.02 × 0.20)
1
O22 = = 0.507999
1 + exp(−[(0.05 × 0.40) + (0.02 × 0.60)
1
O32 = = 0.502250
1 + exp(−[(0.05 × 0.10) + (0.02 × 0.20)
1
O13 =
1+ exp(−[(O12 × 0.30) + (O22 × 0.35) + (O32 × 0.45)
O13 = 0.635523
1
O23 =
1+ exp(−[(O12 × 0.35) + (O22 × 0.25) + (O32 × 0.30)
O23 = 0.611878
R1 : E13 = O1,actual
4
− O14 = 1 − 0.635523 = 0.364
R2 : E23 = O2,actual
4
− O24 = 0.0 − 0.611878 = −0.611
Una vez obtenidos los errores finales de la red neuronal, se procede a distribuir
el error a los otros elementos de la red, a partir de las ecuaciones (4.6.1) y (4.6.2) se
obtiene:
X
En = On (1 − On ) wij Ej (4.6.5)
40
Asignación del error. Primero se asigna el error a los elementos de la segunda
capa.
En caso de contar con un número mayor de capas, se deberá de actualizar los pesos
asociados a dicha capa y los nuevos valores de errores calculados, es decir, primero se
obtiene el error a la salida de la red neuronal, este error es utilizado para obtener el
error asociado a la penúltima capa y el error obtenido es empleado a la antepenúltima
y ası́ sucesivamente.
Actualización de los pesos. Comenzaremos a actualizar los pesos conectados en la
segunda y tercera capa.
2
w11 = 0.30 + 0.3 × E13 × O12 = 0.3553
2
w21 = 0.35 + 0.3 × E13 × O22 = 0.4054
2
w31 = 0.45 + 0.3 × E13 × O32 = 0.5048
2
w12 = 0.35 + 0.3 × E23 × O12 = 0.2570
2
w22 = 0.25 + 0.3 × E23 × O22 = 0.1578
2
w32 = 0.30 + 0.3 × E23 × O32 = 0.2079
Ahora que todos los pesos en la red neuronal se han actualizado, los datos de
entrada del punto (x1 = 0.05 y x2 = 0.02) se pasa de nuevo a través de la red
41
4. Redes neuronales artificiales
42
Figura 4.10: Actualización de pesos en modo por lotes
43
4. Redes neuronales artificiales
1.- Suaviza los cambios en los pesos filtrando las variaciones de alta frecuencia.
2.- Cuando una secuencia larga de pesos cambia en la misma dirección, el momen-
to tiende a amplificar la tasa de aprendizaje efectivo, lo cual conduce a una
convergencia más rápida.
3.- El momento puede ayudar al sistema en ocasiones para que escape de mı́nimos
locales proporcionándole al estado del vector la inercia suficiente en la superficie
del error.
(a) (b)
Figura 4.12: Efectos en la trayectoria: (a) con momento, (b) sin momento
44
4.8. Resumen del capı́tulo
En este capı́tulo se describen los fundamentos biológicos de las RNAs y su estruc-
tura funcional. Se presentan las funciones de activación utilizadas por las RNAs y
se introducen los conceptos de entrenamiento: supervisado y no supervisado. Debido
a que el entrenamiento supervisado incorpora a un maestro externo y determina el
comportamiento deseado por la RNA generando una señal de error, tı́picamente este
tipo de aprendizaje es el más utilizado por RNAs.
Determinar el número de neuronas y capas ocultas de una RNA es uno de los
principales problemas a resolver, demasiadas neuronas pueden ser causantes de sobre-
ajuste y muy pocas neuronas causantes de sub-ajuste. Existen diferentes metodologı́as
que determinan el número de neuronas y capas ocultas en un RNA; en este docu-
mento se presenta la metodologı́a conocida como: regla de la pirámide geométrica. Se
presenta la topologı́a de RNA propuesta por [1], la cual es utilizada para la predicción
de series de tiempo obtenidas a partir de datos experimentales de un ERG.
Existen dos métodos de actualización de pesos: modo incremental y modo por
lotes; es importante verificar cual de estos métodos presenta mejores resultados. Se
presentan diversos algoritmos de entrenamiento disponibles en MATLAB, donde la
selección de ellos dependerá de la la complejidad del problema. Finalmente se pre-
senta las ventajas del uso del algoritmo de entrenamiento gradiente descendiente con
momento respecto a algoritmos que no utilizan momento.
45
4. Redes neuronales artificiales
46
Capı́tulo 5
donde k = 9 y f = 2051. Este filtro aproxima los datos experimentales con los datos
observados en el osciloscopio. En la figura 5.1 se muestra una comparación entre los
datos experimentales y los datos después de haber sido filtrados.
47
5. Reproducción de una serie de tiempo caótica usando RNAs
2 2
1.5 1.5
1 1
0.5 0.5
0 0
y
y
−0.5 −0.5
−1 −1
−1.5 −1.5
−2 −2
−3 −2 −1 0 1 2 3 −3 −2 −1 0 1 2 3
x x
(a) (b)
Figura 5.1: Resultados experimentales del oscilador caótico de 2 enrollamientos. (a) datos experimen-
tales, (b) aplicando el filtro sgolayf ilt
48
3
2.5
2
1.5
1
0.5
0
−0.5
−1
−1.5
−2
−2.5
−3
0 0.5 1 1.5 2 2.5 3 3.5 4
Tiempo (s) 4
x 10
(a)
1
0.75
0.5
0.25
0
−0.25
−0.5
−0.75
−1
0 0.5 1 1.5 2 2.5 3 3.5 4
Tiempo (s) 4
x 10
(b)
Figura 5.2: Datos experimentales de la variable x: (a) datos sin normalizar y (b) datos normalizados
49
5. Reproducción de una serie de tiempo caótica usando RNAs
rendimiento de las RNAs estará dado por el promedio de: tiempo de entrenamiento,
número de epoch necesarios para actualizar los pesos y el MSE.
En la tabla 5.1 se presenta las combinaciones de LR y M C que presentaron un
menor MSE, epoch y tiempo de entrenamiento. La serie de tiempo empleada para
el entrenamiento de las RNAs es obtenida a partir de datos de simulación de un
osciladores caóticos de dos enrollamientos y cuyo valores de coeficientes son 0.7.
En la tabla 5.2 se presentan los resultados del entrenamiento de las RNAs emplean-
do datos experimentales. Los valores de LR y M C presentados fueron seleccionados
en base a resultados obtenidos al realizar variaciones dentro del rango [0, 1] con pasos
de h = 0.1.
Las figuras 5.3, 5.4 y 5.5 muestran los resultados obtenidos en las tablas 5.1 y 5.2.
50
Como se observa en la figura 5.3, la RNA que presenta un menor número de epoch
tanto para los datos experimentales y obtenidos mediante simulación es la RNA de 6
capas, seguida de la RNA de 4 capas y finalmente la RNA de 3 capas. Estos resultados
muestran que aquellos valores seleccionados de LR y M C que presentan un menor
número de epoch también presentan un menor número de iteraciones.
9000
8000 RNA 6 capas
7000 RNA 4 capas
6000 RNA 3 capas
Epoch
5000
4000
3000
2000
1000
0
L=1.0,M=0.9
L=0.9,M=0.8
L=0.7,M=0.9
L=0.7,M=0.8
L=0.6,M=0.9
L=0.6,M=0.7
L=0.5,M=0.6
L=0.3,M=0.9
L=0.2,M=0.9
L=0.2,M=0.8
L=0.1,M=0.7
(a)
3000
RNA 6 capas
2500 RNA 4 Capas
2000 RNA 3 Capas
Epoch
1500
1000
500
0
L=1.0,M=0.9
L=0.9,M=0.8
L=0.7,M=0.9
L=0.7,M=0.8
L=0.6,M=0.9
L=0.6,M=0.7
L=0.5,M=0.6
L=0.3,M=0.9
L=0.2,M=0.9
L=0.2,M=0.8
L=0.1,M=0.7
(b)
Figura 5.3: Promedio del número de epoch empleando datos: (a) simulados y (b) experimentales
51
5. Reproducción de una serie de tiempo caótica usando RNAs
300
RNA 6 capas
250 RNA 4 capas
RNA 3 capas
200
Tiempo
150
100
50
0
L=1.0,M=0.9
L=0.9,M=0.8
L=0.7,M=0.9
L=0.7,M=0.8
L=0.6,M=0.9
L=0.6,M=0.7
L=0.5,M=0.6
L=0.3,M=0.9
L=0.2,M=0.9
L=0.2,M=0.8
L=0.1,M=0.7
(a)
700
RNA 6 capas
600
RNA 4 capas
500
RNA 3 capas
Tiempo
400
300
200
100
0
L=1.0,M=0.9
L=0.9,M=0.8
L=0.7,M=0.9
L=0.7,M=0.8
L=0.6,M=0.9
L=0.6,M=0.7
L=0.5,M=0.6
L=0.3,M=0.9
L=0.2,M=0.9
L=0.2,M=0.8
L=0.1,M=0.7
(b)
Figura 5.4: Promedio del tiempo de entrenamiento empleando datos: (a) simulados y (b) experimen-
tales
En la figura 5.5 se muestra el promedio del MSE. Se observa que con la RNA
de 6 capas propuesta en [1] se obtiene un menor MSE que con el uso de las RNAs
obtenidas mediante la metodologı́a de la regla de la pirámide geométrica. Sin embargo
se presentan algunos casos en que la RNA de 3 capas presenta un error menor que la
RNA de 6 capas. Por ejemplo, cuando L = 1 y M C = 0.9 se obtiene un menor MSE
con una RNA de 3 capas, pero el tiempo de entrenamiento requerido es mayor.
52
0.2
0.175 RNA 6 capas
RNA 4 capas
0.15
RNA 3 capas
MSE 0.125
0.1
0.075
0.05
0.025
0
L=1.0,M=0.9
L=0.9,M=0.8
L=0.7,M=0.9
L=0.7,M=0.8
L=0.6,M=0.9
L=0.6,M=0.7
L=0.5,M=0.6
L=0.3,M=0.9
L=0.2,M=0.9
L=0.2,M=0.8
L=0.1,M=0.7
(a)
0.2
0.175 RNA 6 capas
RNA 4 capas
0.15
RNA 3 capas
0.125
MSE
0.1
0.075
0.05
0.025
0
L=1.0,M=0.9
L=0.9,M=0.8
L=0.7,M=0.9
L=0.7,M=0.8
L=0.6,M=0.9
L=0.6,M=0.7
L=0.5,M=0.6
L=0.3,M=0.9
L=0.2,M=0.9
L=0.2,M=0.8
L=0.1,M=0.7
(b)
Figura 5.5: Promedio del MSE obtenido empleando datos: (a) simulados y (b) experimentales
53
5. Reproducción de una serie de tiempo caótica usando RNAs
800
700
600
500
Epoch
400
300
200
100
0
2 3 4 5 6 7 8 9 10
∆
400 0.06
350 0.05
300
0.04
Tiempo [s]
250
MSE
200 0.03
150 0.02
100
0.01
50
0 0
2 3 4 5 6 7 8 9 10 2 3 4 5 6 7 8 9 10
∆ ∆
54
Tabla 5.3: Valores de TDL con mejor desempeño, LR = 0.7 y M C = 0.9
∆ MSE Tiempo (s) Epoch
2 179.8 44.17 0.00199
3 169.7 42.13 0.00037
5 189 46.06 0.00146
7 193.1 48.39 0.0002515
8 194.2 47.64 0.0006578
9 193.3 40.89 0.0006578
55
5. Reproducción de una serie de tiempo caótica usando RNAs
15
14.98 RNA 6 capas
14.96
14.94
Tiempo
14.92
14.9
14.88
14.86
14.84
14.82
14.8
L=1.0,M=0.9
L=0.9,M=0.8
L=0.7,M=0.9
L=0.7,M=0.8
L=0.6,M=0.9
L=0.6,M=0.7
L=0.5,M=0.6
L=0.3,M=0.9
L=0.2,M=0.9
L=0.2,M=0.8
L=0.1,M=0.7
(a)
0.06
0.0525 RNA 6 capas
0.045
Tiempo
0.0375
0.03
0.0225
0.015
0.0075
0
L=1.0,M=0.9
L=0.9,M=0.8
L=0.7,M=0.9
L=0.7,M=0.8
L=0.6,M=0.9
L=0.6,M=0.7
L=0.5,M=0.6
L=0.3,M=0.9
L=0.2,M=0.9
L=0.2,M=0.8
L=0.1,M=0.7
(b)
Figura 5.7: Tiempo de entrenamiento, actualización de pesos en modo: (a) incremental y (b) por lotes
56
0.25
RNA de 6 capas
0.225
0.2
MSE
0.175
0.15
0.125
0.1
L=1.0,M=0.9
L=0.9,M=0.8
L=0.7,M=0.9
L=0.7,M=0.8
L=0.6,M=0.9
L=0.6,M=0.7
L=0.5,M=0.6
L=0.3,M=0.9
L=0.2,M=0.9
L=0.2,M=0.8
L=0.1,M=0.7
1
(a)
0.06
RNA de 6 capas
0.05
0.04
MSE
0.03
0.02
0.01
0
L=1.0,M=0.9
L=0.9,M=0.8
L=0.7,M=0.9
L=0.7,M=0.8
L=0.6,M=0.9
L=0.6,M=0.7
L=0.5,M=0.6
L=0.3,M=0.9
L=0.2,M=0.9
L=0.2,M=0.8
L=0.1,M=0.7
(b)
Figura 5.8: MSE obtenido, actualización de pesos en modo: (a) incremental y (b) por lotes
1.5 1.5
1 1
0.5 0.5
0 0
−0.5 −0.5
Reproducción Reproducción
Error Error
−1.5 −1.5
0 500 1000 1500 2000 2500 3000 0 500 1000 1500 2000 2500 3000
Tiempo (s) Tiempo (s)
(a) (b)
57
5. Reproducción de una serie de tiempo caótica usando RNAs
2.5
2
Frecuencia de Error
1.5
0.5
0
LR=0.59,MC=0.29
LR=0.57,MC=0.27
LR=0.55,MC=0.25
LR=0.54,MC=0.24
LR=0.53,MC=0.23
LR=0.51,MC=0.21
LR=0.50,MC=0.20
LR=0.48,MC=0.18
LR=0.45,MC=0.15
LR=0.42,MC=0.12
LR=0.41,MC=0.11
LR=0.38,MC=0.08
LR=0.36,MC=0.06
LR=0.35,MC=0.05
LR=0.34,MC=0.04
LR=0.33,MC=0.03
LR=0.31,MC=0.01
58
Tabla 5.4: Resultados obtenidos del algoritmo gradiente descendiente con momento con h=0.1, em-
pleando en todas las neuronas la función de activación del tipo tangente hiperbólica
Prom. Prom.
Valor Prom. Valor Prob.
del Prom. del Prom.
de LR de de LR de
Gra- Epochs Gra- Epochs
y MC Error y MC Error
diente diente
0.9, 0.8 0.002497 0.5 713.1 0.4, 0.9 0.008425 0.9 3895
0.9, 0.7 0.000916 0.4 662.1 0.4, 0.8 0.010550 0.3 1335.7
0.9, 0.6 0.004866 0.2 1183.1 0.4, 0.7 0.00221 0.3 735.3
0.8, 0.9 0.059100 0.3 646.4 0.4, 0.6 0.002332 0.2 695.7
0.8, 0.7 0.001235 0.4 623.6 0.3, 0.9 0.007762 0.9 7423.6
0.8, 0.6 0.0303799 0.1 673.9 0.3, 0.8 0.0106363 0.3 2268
0.7, 0.8 0.0085 0.5 8117 0.3, 0.7 0.0050 0.3 1483.7
0.7, 0.9 0.0060 0.3 1219 0.3, 0.6 0.0020 0.3 967
0.7, 0.6 0.0410 0.2 453.8 0.2, 0.9 0.0187 0.7 5363.2
0.6, 0.9 0.0085 0.7 1108 0.2, 0.8 0.0059 0.4 3178.9
0.6, 0.8 0.0072 0.4 409 0.2, 0.7 0.0051 0.4 2357.7
0.6, 0.7 0.0131 0.1 559.6 0.2, 0.6 0.0025 0.3 677.7
0.5, 0.9 0.0235 0.7 2713 0.1, 0.9 0.0293 0.8 12053
0.5, 0.8 0.0038 0.5 1283 0.1, 0.8 0.0163 0.7 9156.7
0.5, 0.7 0.0010 0.2 740.1 0.1, 0.7 0.000336 0.7 9636.8
59
5. Reproducción de una serie de tiempo caótica usando RNAs
12000 MC=0.9
MC=0.8
11000
MC=0.7
10000 MC=0.6
9000 MC=0.5
No. de Iteraciones
8000
7000
6000
5000
4000
3000
2000
1000
0
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
Rango de aprendizaje
10
7
Frecuencia de Error
0
LR=0.1,MC=0.9
LR=0.1,MC=0.8
LR=0.1,MC=0.7
LR=0.2,MC=0.9
LR=0.2,MC=0.8
LR=0.2,MC=0.7
LR=0.3,MC=0.9
LR=0.3,MC=0.8
LR=0.3,MC=0.7
LR=0.4,MC=0.9
LR=0.4,MC=0.8
LR=0.4,MC=0.7
LR=0.5,MC=0.9
LR=0.5,MC=0.8
LR=0.5,MC=0.7
LR=0.6,MC=0.9
LR=0.6,MC=0.8
LR=0.6,MC=0.7
LR=0.7,MC=0.9
LR=0.7,MC=0.8
LR=0.7,MC=0.6
LR=0.8,MC=0.9
LR=0.8,MC=0.7
LR=0.8,MC=0.6
LR=0.9,MC=0.8
LR=0.9,MC=0.7
LR=0.9,MC=0.6
60
1000
MC=0.9
900 MC=0.8
MC=0.7
800 MC=0.6
MC=0.5
700
No. de iteraciones
600
500
400
300
200
100
0
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Rango de aprendizaje
Figura 5.13: Valores de LR y M C con mejor desempeño, se emplea h = 0.1 y una función de activación
del tipo lineal en la neurona de la última capa
deseado el número de épocas incremento al doble, lo cual significa que cuando la red
converge al error deseado el tiempo de computo incrementa.
7000
6000
5000
4000
3000
2000
1000
0
LM=0.9, MC=0.8
LM=0.9, MC=0.7
LM=0.8, MC=0.7
LM=0.8, MC=0.6
LM=0.7, MC=0.9
LM=0.7, MC=0.8
LM=0.4, MC=0.9
LM=0.2, MC=0.9
LM=0.6, MC=0.9
LM=0.5, MC=0.9
LM=0.3, MC=0.9
Figura 5.14: Disminución del número de épocas modificando la función de activación de la ultima capa
61
5. Reproducción de una serie de tiempo caótica usando RNAs
Tabla 5.5: Resultados obtenidos del algoritmo gradiente descendiente con momento con h=0.1, em-
pleando en la neurona de la última capa una función de activación del tipo lineal
Prom. Prom.
Valor Prom. Valor Prom.
del Prom. del Prom.
de LR de de LR de
Gra- Epochs Gra- Epochs
y MC Error y MC Error
diente diente
0.1, 0.9 0.01522 0.7 667.09 0.5, 0.7 0.00350 0.6 259.9
0.1, 0.7 0.00449 0.8 886.36 0.5, 0.6 0.00150 0.8 408.8
0.1, 0.6 0.00562 0.6 407 0.6, 0.9 0.01100 0.8 198.4
0.2, 0.9 0.01929 0.8 511.18 0.6, 0.8 0.00332 0.6 277.2
0.2, 0.8 0.00408 0.9 446. 6 0.6, 0.7 0.001090 0.8 350.4
0.2, 0.7 0.00461 0.7 373.44 0.7, 0.9 0.003008 0.9 176.5
0.3,0.9 0.001795 0.8 238.3 0.7, 0.8 0.001421 0.9 381.7
0.3, 0.8 0.00297 0.5 315.1 0.7, 0.6 0.0063 0.4 349.7
0.3, 0.7 0.00711 0.5 346.3 0.8,0.9 0.0036493 0.9 168
0.3, 0.6 0.00288 0.6 357.1 0.8, 0.7 0.0019718 0.4 351
0.4, 0.9 0.02190 0.6 241.11 0.8, 0.6 2.70e+13 0.6 226.5
0.4, 0.8 0.01475 0.5 260.66 0.9, 0.7 0.0023375 0.4 297.4
0.4, 0.6 0.00630 0.5 205 0.9, 0.8 0.0144457 0.3 153.3
0.5, 0.9 0.02936 0.7 173.9 1, 0.9 0.0051539 0.9 202.6
0.5, 0.8 0.02967 0.5 221.7 1, 0.6 0.0082798 0.6 250.6
62
Tabla 5.6: Promedio de los resultados obtenidos empleando datos experimentales y EL=0.3761
RNA de 3 capas RNA de 4 capas RNA de 6 capas
LR,
Epoch Tiempo MSE Epoch Tiempo MSE Epoch Tiempo MSE
MC
1, 0.9 730.80 175.411 0.00965 329.30 103.2976 0.009559 276.65 116.405 0.000365
0.9, 0.8 988.10 255.544 0.0001 417.85 126.0837 0.02849 230.80 95.9772 0.00046
0.7, 0.9 1049.8 261.082 0.019135 293 91.50 0.02875 252.20 105.040 0.00990
0.7, 0.8 1337.40 344.44 0.009564 486.85 147.222 0.04753 269.6 116.336 0.000365
0.6, 0.9 883.30 227.606 0.019075 287.05 86.7168 0.000685 388.50 162.36205 0.019195
0.6, 0.7 957.95 247.0831 0.009765 279.05 83.9329 0.028995 300.05 127.079 0.009785
0.5, 0.6 2082.65 586.613 0.04763 1738.7 528.907 0.028495 392.65 169.42 0.00971
0.3, 0.9 2729.85 964.27 0.05705 1469.7 537.826 0.056915 725.35 311.047 0.019105
0.2, 0.9 3247.80 899.055 0.0665956 1328.5 486.941 0.06651 446.6 193.0998 0.047875
0.1, 0.7 3788.65 1379.62 0.12350 3933.75 1466.625 0.07588 654.650 271.989 0.07618
2100
1800
1500
1200
900
600
300
0
L=1.0,M=0.9
L=0.9,M=0.8
L=0.7,M=0.9
L=0.7,M=0.8
L=0.6,M=0.9
L=0.6,M=0.7
L=0.5,M=0.6
L=0.3,M=0.9
L=0.2,M=0.9
L=0.2,M=0.8
63
5. Reproducción de una serie de tiempo caótica usando RNAs
800
700
600
500
400
300
200
100
0
L=1.0,M=0.9
L=0.9,M=0.8
L=0.7,M=0.9
L=0.7,M=0.8
L=0.6,M=0.9
L=0.6,M=0.7
L=0.5,M=0.6
L=0.3,M=0.9
L=0.2,M=0.9
L=0.2,M=0.8
Figura 5.16: Respuesta del tiempo empleado para cada RNA
0.068
0.058
0.048
0.038
0.028
0.018
0.008
L=0.7,M=0.9
L=0.7,M=0.8
L=0.6,M=0.9
L=1.0,M=0.9
L=0.9,M=0.8
L=0.6,M=0.7
L=0.5,M=0.6
L=0.3,M=0.9
L=0.2,M=0.9
L=0.2,M=0.8
zados) requerido al entrenar la red con 3 series de tiempo con diferente valor de EL,
como se puede observar el tiempo de entrenamiento requerido al emplear EL = 0.3761
es mayor en comparación a EL = 0.3425 y EL = 0.2658, esto debido a que se tiene
un máximo EL, lo que produce que el sistema comienza a ser más caótico y por lo
tanto más impredecible.
En la figura 5.19 se muestra el valor de MSE obtenido para cada caso en que se
64
Resultados usando diferente EL
350
EL=0.3761
325 EL=0.3425
300 EL=0.2658
275
250
225
200
Tiempo
175
150
125
100
75
50
25
0
L=1.0,M=0.9
L=0.7,M=0.9
L=0.7,M=0.8
L=0.6,M=0.9
L=0.6,M=0.7
L=0.5,M=0.6
L=0.3,M=0.9
L=0.2,M=0.9
L=0.2,M=0.8
L=0.1,M=0.7
Figura 5.18: Respuesta del tiempo
modifica el valor de EL, como se puede observar, se obtiene un menor error al emplear
una serie de tiempo con un EL = 0.3425.
Resultados usando diferente EL
0.08
EL=0.3761
0.075
EL=0.3425
0.07 EL=0.2658
0.065
0.06
0.055
0.05
0.045
MSE
0.04
0.035
0.03
0.025
0.02
0.015
0.01
0.005
0
L=1.0,M=0.9
L=0.7,M=0.9
L=0.7,M=0.8
L=0.6,M=0.9
L=0.6,M=0.7
L=0.5,M=0.6
L=0.3,M=0.9
L=0.2,M=0.9
L=0.2,M=0.8
L=0.1,M=0.7
65
5. Reproducción de una serie de tiempo caótica usando RNAs
66
Capı́tulo 6
67
6. Realización en FPGA de una RNA
donde θ = 0.25, L = 2 y β = 1.
En la figura (6.2.1) se muestra una comparación entre los dos métodos de apro-
ximación. El toolbox que MATLAB ofrece permite desarrollar funciones de activa-
ción personalizadas, modificando únicamente las funciones que describen a la función
purelin. Para sintetizar en hardware la RNA, primero es necesario verificar que el
68
1 Polinomio de Orden 4
Polinomio Orden 6
0.8 Polinomio Orden 7
Polinomio Orden 8
Polinomio Orden 9
0.6 Polinomio Orden 10
Funcion Original
0.4
0.2
−0.2
−0.4
−0.6
−0.8
−1
69
6. Realización en FPGA de una RNA
0.5
−0.5
−1
−3 −2 −1 0 1 2 3
70
Pseudo Código 2. Función personalizada tangente hiperbólica
1: f (a)= apply(n,param)
3: a=n
4: LLim = −2 : 2
5: γ =find(n <= −2)
6: a(γ) = −1
7: χ =find(n >= 2)
8: a(χ) = 1
9: ψ =find(n >min(−LLim ) & n <max(0))
10: Tp = n(n >min(−LLim ) & n <max(0))
11: k = Tp . ∗ (β + θ. ∗ Tp )
12: a(ψ) = k
13: φ =find(0 <= n & n < 2)
14: Tp1 = n(0 <= n & n < 2)
15: k1 = Tp1 . ∗ (β − θ. ∗ Tp1 )
16: a(φ) = k1
realizada por los pesos se realizaron con SCM. En el caso de las polarizaciones, se
almacenaron en variables con un formato de 4.22
71
6. Realización en FPGA de una RNA
Pesos Polarizaciones
m=1 m=2 m=3
n=1 -0.1020998955 -0.0973799229 -0.0926499367 0.0289199352
n=2 0.2051999569 0.1905999184 0.1758999825 -0.0622000694
n=3 0.0263199806 0.0239100456 0.0215098858 0.0624599457
n=4 -0.1422998905 -0.1308000088 -0.1194000244 0.0477199554
L2,n = f (In1 Wn,1 + In2 Wn,2 + In3 Wn,3 + In4 Wn,4 + Bn ) (6.2.2)
En la figura 6.5 se muestra la sı́ntesis realizada para el diseño de las neuronas que se
encuentran en la segunda capa.
72
Tabla 6.3: Valores de pesos y polarizaciones para la segunda capa
Pesos Polarizaciones
m=1 m=2 m=3 m=4
n=1 -1.6719999313 -0.4147000313 1.4600000381 0.2945001125 2.2769999504
n=2 0.3118999004 -1.2760000229 -0.0129299164 -1.8589999676 -1.5179998875
n=3 0.44810009 -1.7809998989 -1.2179999352 -0.6514000893 -0.7614998817
n=4 -0.2053999901 0.203099966 -1.7460000515 1.4360001087 0.0007128716
n=5 0.55189991 -1.114000082 1.7479999065 0.8046998978 0.7864000797
n=6 -1.3550000191 0.8132998943 -0.7953000069 1.4330000877 -1.5250000954
n=7 0.5044000149 -0.3478999138 2.1930000782 0.0106298923 2.2769999504
L3,n = f (In1 Wn,1 + In2 Wn,2 + In3 Wn,3 + In4 Wn,4 + (6.2.3)
In5 Wn,5 + In6 Wn,6 + In7 Wn,7 + Bn )
73
6. Realización en FPGA de una RNA
Pesos Polarizaciones
m=1 m=2 m=3 m=4
n=1 -1.6719999313 -0.4147000313 1.4600000381 0.2945001125 2.2769999504
n=2 0.3118999004 -1.2760000229 -0.0129299164 -1.8589999676 -1.5179998875
n=3 0.44810009 -1.7809998989 -1.2179999352 -0.6514000893 -0.7614998817
n=4 -0.2053999901 0.203099966 -1.7460000515 1.4360001087 0.0007128716
n=5 0.55189991 -1.114000082 1.7479999065 0.8046998978 0.7864000797
n=6 -1.3550000191 0.8132998943 -0.7953000069 1.4330000877 -1.5250000954
n=7 0.5044000149 -0.3478999138 2.1930000782 0.0106298923 2.2769999504
L4,n = f (In1 Wn,1 + In2 Wn,2 + In3 Wn,3 + In4 Wn,4 + Bn ) (6.2.4)
74
Tabla 6.5: Valores de pesos y polarizaciones para la cuarta capa
Pesos Polarizaciones
m=1 m=2 m=3 m=4 m=5
n=1 0.5046000481 0.6436998844 -1.4660000801 -1.6019999981 -2.4110000134
n=2 1.9690001011 -1.3229999542 -0.0938899517 0.5957999229 -1.5969998837
n=3 -1.881000042 0.5662000179 1.385999918 0.1117999554 0.9885001183
n=4 0.9326999187 -1.3489999771 -0.2648999691 -1.6689999104 -0.3362998962
n=5 -0.1314001083 0.6986000538 -1.5460000038 1.628000021 -0.3373000622
n=6 2.0720000267 0.486000061 -0.8828001022 0.4841001034 1.0090000629
n=7 0.5030999184 0.6422998905 2.1679999828 -0.6591999531 1.5429999828
n=8 -1.5069999695 0.9056999683 -0.0945599079 1.5629999638 -2.3550000191
L5,n = f (In1 Wn,1 + In2 Wn,2 + In3 Wn,3 + In4 Wn,4 + (6.2.5)
In5 Wn,5 + In6 Wn,6 + In7 Wn,7 + In8 Wn,8 + Bn )
75
6. Realización en FPGA de una RNA
76
L6,n = f (In1 Wn,1 + In2 Wn,2 + In3 Wn,3 + In4 Wn,4 + Bn ) (6.2.6)
77
6. Realización en FPGA de una RNA
para distinguir un byte del siguiente y reducir las posibilidades de error [43]. En la
figura 6.11 se muestra el formato de un byte usado en comunicación serial.
78
rendimiento del sistema, por lo que se opto por utilizar comunicación serial entre la
tarjeta Altera Cyclone IV GX FPGA DE2i-150. En la tabla 6.8 se muestra los datos
utilizados para realizar la interfaz serial [44]. Los bloques encargados de la transmisión
y recepción son mostrados en la figura 6.12.
(a) (b)
Considerando que la red neuronal cuenta con 3 entradas que manejan un formato
de 4.22, es necesario que los datos recibidos y transmitidos del CPU manejen un
longitud de palabra de 32 bits, por lo que los datos que sean transmitidos del CPU
al FPGA serán 3 paquetes, cada uno de 4bytes; por otro lado, los datos que reciba el
CPU sera un paquete de 4 bytes.
En la figura 6.13 se muestra el bloque utilizado para la recepción de los datos,
donde los registros habilitados por EOR serán activados cada vez que un byte sea
recibido, cuando 4 bytes sean recibidos, el registro habilitado por LHA se activará,
en el siguiente ciclo de reloj LPA se activará; este proceso continuará hasta que los
3 paquetes hayan sido recibidos, posteriormente los registros habilitados porLGA se
activarán, con este procedimiento se asegura obtener los datos de las 3 entradas en
el mismo instante de tiempo. La salida del Blq: ANN será obtenida trascurridos 10
ciclos de reloj.
79
6. Realización en FPGA de una RNA
80
Figura 6.14: Diagrama a bloques general: recepción y transmisión de datos
81
6. Realización en FPGA de una RNA
0.5
Amplitud
−0.5
−1
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Tiempo (s) 4
0.01 x 10
0
Error
−0.01
−0.02
−0.03
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Tiempo (s) 4
x 10
Resultados Experimentales Señal Original Error
82
Capı́tulo 7
7.1. Conclusiones
En esta tesis se presentó una metodologı́a para el diseño de osciladores de múltiples
enrollamientos basados en SNLF. A partir de las simulaciones numéricas realizadas en
MATLAB, es posible realizar la descripción en VHDL para cada uno de los componen-
tes que conformarán al oscilador caótico. A medida que el número de enrollamientos
incrementa el número de pendientes y niveles de saturación que conforman a la SNLF
incrementarán y por lo tanto, los recursos de hardware en el FPGA también.
El uso de FPGAs para el diseño de osciladores caóticos facilita la generación de
múltiples enrollamientos, hecho que con el uso de dispositivos electrónicos comercia-
les no se habı́a logrado hasta ahora, debido a que el número de enrollamientos se
encuentra ligado a la máxima alimentación que estos dispositivos permiten.
El uso de multiplicadores de 2 variables afectan en gran medida el desempeño del
sistema, por lo tanto, el uso mı́nimo de estos conlleva a una mejora de éste, por lo
tanto, en esta tesis se hace uso de SCM.
Las series de tiempo caóticas obtenidas a partir de los osciladores basados en SNLF
presentan una dinámica más compleja a medida que el número de enrollamientos
incrementa. En este trabajo se utilizaron las series de tiempo obtenidas a partir
del oscilador caótico de doble enrollamiento, además, se utilizan series de tiempo
obtenidas al variar el valor del exponente de Lyapunov.
A pesar de que muchos autores recomiendan una sola capa oculta para el diseño
de una RNA, esto dependerá del problema a resolver. En esta tesis se hace una
comparación entre 3 distintas arquitecturas de RNA, 2 de ellas basadas a partir de
la regla de la pirámide geométrica y una de ellas propuesta en [1]. Los resultados
83
7. Conclusiones y trabajo futuro
obtenidos al realizar una variación del LR y MC demuestran que el uso de una RNA
con 4 capas intermedias presenta en la mayorı́a de los casos un mejor desempeño
que una RNA con 2 capas intermedias o incluso una RNA de 1 capa. Este resultado
presentó el mismo comportamiento incluso al utilizar series de tiempo con diferente
valor de LE obtenidos experimentalmente y mediante simulación.
La sı́ntesis de la RNA en un FPGA, permite verificar el funcionamiento de ésta,
sin embargo, como era de esperarse, debido a que la RNA contiene un gran número
de neuronas y capas intermedias los recursos utilizados fueron mayores a pesar de
emplearse SCM para realizar las multiplicaciones correspondientes a cada uno de los
pesos asociados con cada neurona. Además, se demostró que a pesar de tener un
error debido a la representación binaria del conjunto de pesos y un error debido a
la implementación de la función tangente hiperbólica, la reconstrucción de la señal x
que realiza la RNA presenta un resultado aceptable.
84
Apéndices
85
Apéndice
Tabla A.1: Ejemplo de datos obtenidos de las simulaciones empleando en la última capa una función
de activación del tipo tangente hiperbólica y h=0.01
LR = 0.6 & M C = 0.3 LR = 0.59 & M C = 0.29 LR = 0.58 & M C = 0.28
Núm de Gradien- Núm de Gradien- Núm de Gradien-
Desarrollo Desarrollo Desarrollo
Épocas te Épocas te Épocas te
425 0.0105 0.384 24544 0.0001 0.0319 436 0.00151 0.174
1056 0.00112 0.271 459 0.000574 0.191 445 0.000769 0.112
762 0.00232 0.365 519 0.00389 0.274 548 0.00361 0.23
806 0.00122 0.191 428 0.00687 0.323 453 0.00343 0.328
895 0.000719 0.184 354 0.00244 0.242 421 0.00324 0.186
385 0.00964 0.31 511 0.00456 0.406 393 0.00533 0.378
1594 0.000258 0.0264 397 0.00276 0.306 420 0.00233 0.168
60000 0.000168 0.0368 389 0.00419 0.255 469 0.00293 0.198
1483 0.000356 0.0907 411 0.00245 0.236 435 0.00106 0.262
869 0.000532 0.226 364 0.00121 0.119 393 0.00205 0.186
LR = 0.56 & M C = 0.26 LR = 0.55 & M C = 0.25 LR = 0.54 & M C = 0.24
Núm de Gradien- Núm de Gradien- Núm de Gradien-
Desarrollo Desarrollo Desarrollo
Épocas te Épocas te Épocas te
454 0.00848 0.381 724 0.00101 0.205 709 0.00379 0.382
706 0.00254 0.355 352 0.0124 0.334 42199 0.0001 0.0255
1041 0.000755 0.185 469 0.00692 0.279 38067 0.0001 0.0242
882 0.000417 0.161 413 0.0105 0.36 26099 0.0001 0.0233
484 0.0081 423 430 0.00844 0.419 788 0.00127 0.196
409 0.0124 0.548 31794 0.0001 0.0239 484 0.00934 0.428
529 0.0114 0.352 481 0.0121 0.58 1140 0.000714 0.206
375 0.0094 0.376 60000 0.000115 0.0284 438 0.0088 0.332
869 0.000865 0.198 1027 0.00106 0.196 661 0.00315 0.244
440 0.00642 0.32 60000 0.000102 0.0267 1035 0.00048 0.112
87
A. Resultados de las simulaciones
Tabla A.2: Resultados obtenidos del algoritmo gradiente descendiente con momento con h=0.01, em-
pleando en todas las neuronas la función de activación del tipo tangente hiperbólica
Prom. Prom. Prom.
Valor de Prom. Valor de Prom.de Prom.
del Gra- de del Gra-
LR y M C Epochs LR y M C Error Epochs
diente Error diente
0.59, 0.29 0.23839 0.1 2837.6 0.45, 0.15 0.196 0.3 8809.7
0.57, 0.27 0.18069 0.3 9295.5 0.42, 0.12 0.250 0.1 2359
0.55, 0.25 0.2452 0.1 15569 0.41, 0.11 0.266 0.1 3068
0.54, 0.24 0.1973 0.3 11162 0.38, 0.08 0.2727 0.1 1640.1
0.53, 0.23 0.1382 0.2 17428.5 0.34, 0.04 0.26925 0.1 11842.7
0.51, 0.21 0.2132 0.2 12809.1 0.35, 0.05 0.22667 0.1 11595.7
0.5, 0.2 0.29273 0.1 1477.7 0.31, 0.01 0.26189 0.1 4173.9
Tabla A.3: Ejemplo de datos obtenidos de las simulaciones empleando en la última capa una función
de activación del tipo tangente hiperbólica y h=0.1
LR = 0.1 & M C = 0.9 LR = 0.1 & M C = 0.8 LR = 0.1 & M C = 0.7
Núm de Gradien- Núm de Gradien- Núm de Gradien-
Desarrollo Desarrollo Desarrollo
Épocas te Épocas te Épocas te
77 0.249 0.000662 4006 0.00032 0.159 12893 0.0001 0.000328
23561 0.0001 0.000215 8586 0.0001 0.00032 14586 0.0001 0.000199
17979 0.0001 0.000299 71 0.248 0.00149 62 0.249 0.000338
5064 0.0001 0.000369 18858 0.0001 0.000215 12644 0.0001 0.000344
17138 0.0001 0.000425 9032 0.0001 0.000346 12189 0.0001 0.000238
11869 0.0001 0.000313 17094 0.0001 0.000211 64 0.249 5.3e − 5
7748 0.0001 0.000422 11038 0.0001 0.000319 26306 0.0001 0.000198
10052 0.0001 0.000269 11423 0.0001 0.000342 9284 0.0001 0.000243
24945 0.0001 0.000253 62 0.248 0.000986 60 0.25 0.00121
2100 0.00256 0.29 11397 0.0001 0.000337 8280 0.0001 0.000262
LR = 0.2 & M C = 0.9 LR = 0.2 & M C = 0.8 LR = 0.2 & M C = 0.7
Núm de Gradien- Núm de Gradien- Núm de Gradien-
Desarrollo Desarrollo Desarrollo
Épocas te Épocas te Épocas te
4130 0.0001 0.000265 870 0.0001 0.000232 73 0.248 0.000121
74 0.248 0.00514 228 0.00556 0.0236 3555 0.0001 0.000351
5089 0.0001 0.000316 15295 0.0001 0.00218 5100 0.0001 0.000329
8518 0.0001 0.00025 67 0.247 0.00225 274 0.00525 0.0222
6824 0.0001 0.000318 2958 0.0001 0.000455 5777 0.0001 0.000247
16703 0.0001 0.000175 256 0.00409 0.0137 66 0.248 0.00442
1244 0.000379 0.175 1688 0.000378 0.00221 3176 0.0001 0.00033
8281 0.0001 0.00042 428 0.0013 0.0114 417 0.000654 0.00369
2695 0.0001 0.000382 4626 0.0001 0.00311 151 0.00845 0.0192
74 0.248 0.00481 5373 0.0001 0.000335 4988 0.0001 0.000333
88
Tabla A.4: Ejemplo de datos obtenidos de las simulaciones empleando en la última capa una función
de activación del tipo lineal y h=0.1
LR = 0.1 & M C = 0.9 LR = 0.1 & M C = 0.8 LR = 0.1 & M C = 0.7
Núm de Gradien- Núm de Gradien- Núm de Gradien-
Desarrollo Desarrollo Desarrollo
Épocas te Épocas te Épocas te
751 0.0001 0.00117 359 0.0001 0.00315 644 0.0001 0.00243
494 0.0001 0.00242 67 0.247 0.007.58 1292 0.0001 0.000831
75 0.248 0.00932 63 0.248 0.0008.82 64 0.248 0.00435
485 0.0001 0.00117 62 0.248 0.000206 363 0.0022 0.0173
71 0.248 0.0059 577 0.000824 0.00674 1116 0.0001 0.000964
573 0.0001 0.00151 65 0.248 0.000204 729 0.0001 0.00133
511 0.0001 0.00308 68 0.248 0.000133 713 0.0001 0.00205
1688 0.000323 0.117 886 0.0001 0.000966 974 0.0001 0.000936
1311 0.0001 0.000982 378 0.000918 0.109 1795 0.0001 0.000824
1311 0.0001 0.000982 378 0.000918 0.109 1795 0.0001 0.000824
LR = 0.2 & M C = 0.9 LR = 0.2 & M C = 0.8 LR = 0.2 & M C = 0.7
Núm de Gradien- Núm de Gradien- Núm de Gradien-
Desarrollo Desarrollo Desarrollo
Épocas te Épocas te Épocas te
471 0.0001 0.0018 246 0.0001 0.00147 201 0.00178 0.0191
726 0.000176 0.0721 805 0.0001 0.000702 394 0.0001 0.00094
772 0.0001 0.000751 366 0.00222 0.027 168 0.0001 0.00244
355 0.0001 0.00169 488 0.0001 0.000978 388 0.0001 0.0016
360 0.000951 0.126 389 0.0001 0.000946 667 0.0001 0.000883
569 0.0001 0.00096 259 0.0001 0.0021 301 0.0001 0.00123
497 0.0001 0.000976 271 0.0001 0.00106 370 0.0001 0.00143
244 0.0001 0.00313 584 0.0001 0.00183 608 0.0001 0.000813
92 0.25 0.00199 601 0.0001 0.00098 264 0.00217 0.0131
841 0.0001 0.00165 389 0.0001 0.00128 68 0.249 0.00253
89
A. Resultados de las simulaciones
90
Apéndice
Publicaciones
91
B. Publicaciones
92
Bibliografı́a
[2] U. Meyer-Baese, Digital Signal Processing with Field Programmable Gate Arrays,
3rd ed., 2007.
[9] T. Masters, Practical Neural Network Recipes in C++. Academic Press, Inc.,
1993.
93
BIBLIOGRAFÍA
[15] Ángel Mario Garcı́a Pedrero, “Arquitectura neuronal apoyada en señales recons-
truidas con wavelets para predicción de series de tiempo caóticas,” Master’s
thesis, Instituto Nacional de Astrofı́sica Óptica y Electrónica INAOE, 2009.
[16] S. Zemke, “Data minina for prediction. financial series case,” Ph.D. dissertation,
The Royal Institute of Technology, 2003.
[17] H. Kantz and T. Schireiber, Nonlinear time series analysis. Cambridge Univer-
sity Press, 2003.
[18] E. Diaconescu, “The use of narx neural networks to predict chaotic time series,”
WSEAS Trans. Comp. Res., vol. 3, no. 3, pp. 182–191, Mar. 2008. [Online].
Available: http://dl.acm.org/citation.cfm?id=1466884.1466892
94
[19] J. Villavicencio, “Introducción a series de tiempo,” accessed: 2014-09-02.
[Online]. Available: http://www.estadisticas.gobierno.pr/iepr/LinkClick.aspx?
fileticket=4 BxecUaZmg%3D
[23] P. G. Gil, “Long term prediction, chaos and artificial neural networks. where is
the meeting point?” Engineering Letters, vol. 15, agust 2007.
95
BIBLIOGRAFÍA
[28] P. P. Cruz, inteligencia Artificial con aplicaciones a la Ingenierı́a, 1st ed. Al-
faomega, 2010.
[37] T. J. Rose, Fuzzy Logic with Engineering Applications, 3rd ed. Wiley, 2010.
96
and sequential learning,” accessed: 2015-01-20. [Online]. Available: ftp:
//ftp.sas.com/pub/neural/FAQ2.html
[41] H. Kwan, “Simple sigmoid-like activation function suitable for digital hardware
implementation,” Electronics Letters, vol. 28, no. 15, pp. 1379–1380, July 1992.
[44] De2i-150 Development kit, FPGA system user manual, Terasic Technologies,
2014.
97