Sie sind auf Seite 1von 121

Realización FPGA de una Red

Neuronal Artificial para


Reproducir Comportamiento
Caótico

por

Ana Dalia Pano Azucena

Tesis sometida como requisito parcial para obtener el grado de


Maestro en Ciencias en el Área de Electrónica en el Instituto
Nacional de Astrofı́sica, Óptica y Electrónica

Supervisada por:

Dr. Esteban Tlelo Cuautle, INAOE


Dr. Carlos Sánchez-López, UATx

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:

Ana Dalia Pano Azucena

Asesores:
Dr. Esteban Tlelo Cuautle
Dr. Carlos Sánchez López

Instituto Nacional de Astrofı́sica Óptica y Electrónica


Coordinación de Electrónica

Tonantzintla, Puebla. Julio 2015


A mis padres, Severiano Pano Xochimitl y Antolina Azucena Coyotecatl
A mis hermanas, Alicia, Mariel y Carolina ...

i
ii
Agradecimientos

A mi familia por su apoyo incondicional.


A mi asesor, el Dr. Esteban Tlelo Cuautle por sus consejos, enseñanzas, apoyo,
paciencia y motivación incondicional, por sus valiosos aportes e interés en el desarrollo
de este trabajo.
Un agradecimiento muy especial al Dr. Carlos Sánchez López y al Dr. José de
Jesús de Rangel Magdaleno, por sus consejos, enseñanzas, paciencia y disponibilidad
durante el proceso de este trabajo de investigación.
A mis sinodales: Dr. Alejandro Dı́az Sánchez, Dr. Luis Hernández Martı́nez, Dr.
José de Jesús Rangel Magdaleno, por sus valiosos comentarios que permitieron mejo-
rar este escrito.
A mis amigos que me han brindado su amistad sincera y que durante estos años
han compartido sus conocimientos académicos.
También quiero agradecer al INAOE (Instituto Nacional de Astrofı́sica, Óptica y
Electrónica) por las facilidades otorgadas.
Al CONACyT por el apoyo brindado mediante la beca 290817 para realizar mis
estudios de maestrı́a.
A todos ellos muchas gracias.

iii
Agradecimientos

iv
Resumen

Existe una gran cantidad de fenómenos naturales que presentan un comportamien-


to caótico. En ingenierı́a, los sistemas caóticos son un campo de investigación muy
atractivo que involucra la generación de nuevos modelos, la realización con distintos
circuitos electrónicos, etc. Un sistema caótico presenta un comportamiento aleatorio,
debido a su dinámica impredecible y sensibilidad a las condiciones iniciales, lo cual
hace difı́cil reproducir el comportamiento de estos sistemas.
El objetivo de esta tesis es la realización de una red neuronal artificial (RNA) en
un FPGA para reproducir series de tiempo obtenidas a partir de osciladores caóticos.
Las RNAs tienen la capacidad de aprender de la experiencia y modificarse de
acuerdo con los cambios de su entorno, son usadas para resolver problemas de gran
complejidad, y pueden ajustar desde el más simple hasta el más complejo patrón
dependiendo de la naturaleza y complejidad del problema abordado.
En este trabajo se presentan 2 topologı́as de RNAs basadas en la regla de la
pirámide geométrica y una topologı́a propuesta por (Sprott, 2014). Se presentan ex-
perimentos para determinar aquella RNA que presenta un mejor comportamiento.
Finalmente, se presenta la implementación en FPGA de la RNA seleccionada, para
reproducir una serie de tiempo caótica.

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

Lista de Figuras XIII

Lista de Tablas XVII

Lista de Acrónimos XIX

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

2. Series de tiempo caóticas 5


2.1. Serie de tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2. Series de tiempo caóticas . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2.1. Oscilador caótico de dos enrollamientos . . . . . . . . . . . . . 7
2.3. Exponente de Lyapunov . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3.1. Oscilador caótico de dos enrollamientos con exponente de Lya-
punov positivo . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4. Resumen del capı́tulo . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

ix
TABLA DE CONTENIDO

3. Realización en hardware de un oscilador caótico 15


3.1. Descripción VHDL del oscilador caótico basado en SNLF . . . . . . . 17
3.2. Multiplicadores de una sola constante . . . . . . . . . . . . . . . . . . 19
3.3. Realización en FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4. Resultados experimentales . . . . . . . . . . . . . . . . . . . . . . . . 21
3.5. Resumen del capı́tulo . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4. Redes neuronales artificiales 25


4.1. Fundamentos biológicos de las RNAs . . . . . . . . . . . . . . . . . . 25
4.2. Modelo neuronal y estructura funcional . . . . . . . . . . . . . . . . . 26
4.3. Función de activación . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.4. Concepto de entrenamiento y revisión de datos . . . . . . . . . . . . . 30
4.4.1. Aprendizaje no-supervisado . . . . . . . . . . . . . . . . . . . 31
4.4.2. Aprendizaje supervisado . . . . . . . . . . . . . . . . . . . . . 31
4.5. Diseño de una RNA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.5.1. Regla de la pirámide geométrica . . . . . . . . . . . . . . . . . 34
4.5.2. Red neuronal de 6 capas . . . . . . . . . . . . . . . . . . . . . 35
4.6. Técnicas de actualización de pesos . . . . . . . . . . . . . . . . . . . . 37
4.6.1. Actualización de pesos en modo incremental . . . . . . . . . . 37
4.6.2. Actualización de pesos en modo por lotes . . . . . . . . . . . . 42
4.7. Algoritmos de entrenamiento . . . . . . . . . . . . . . . . . . . . . . . 42
4.7.1. Gradiente descendiente con momento . . . . . . . . . . . . . . 43
4.8. Resumen del capı́tulo . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

5. Reproducción de una serie de tiempo caótica usando RNAs 47


5.1. Comparación entre 3 distintas topologı́as de RNAs . . . . . . . . . . 49
5.2. Resultados obtenidos empleando diferentes lineas de retardo . . . . . 53
5.3. Resultados obtenidos empleando las técnicas de actualización de pesos:
incremental y por lotes . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.4. Modificación de la función de activación de la última capa de la RNA 56
5.4.1. Función de activación del tipo tangente hiperbólica en la última
capa de la RNA . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.4.2. Función de activación del tipo lineal en la última capa de la RNA 59
5.5. Reconstrucción de series de tiempo con distintos EL . . . . . . . . . . 62
5.6. Resumen del capı́tulo . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

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

7. Conclusiones y trabajo futuro 83


7.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
7.2. Trabajos a futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

Apéndices 85

A. Resultados de las simulaciones 87

B. Publicaciones 91

Bibliografı́a 93

xi
TABLA DE CONTENIDO

xii
Lista de Figuras

2.1. Celda básica de la SNLF de 3 segmentos . . . . . . . . . . . . . . . . 8


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
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
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

3.1. Representación numérica utilizada en la aritmética digital [2] . . . . . 16


3.2. Bloques básicos de construcción: (a) multiplicador y (b) sumador . . 17
3.3. Bloque comparador . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.4. Sı́ntesis de zn+1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.5. Sı́ntesis de xn+1 y yn+1 . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.6. Esquema general del oscilador caótico, IC=condiciones iniciales . . . 19
3.7. Multiplicación por 7110 usando 3 sumadores . . . . . . . . . . . . . . 20
3.8. Diagrama de SCMs. (a) multiplicación por 0.0110 , (b) multiplicación
por 0.710 , (c) multiplicación por −0.710 . . . . . . . . . . . . . . . . . 21
3.9. Sı́ntesis de zn+1 , h = ∆t . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.10. Sı́ntesis de xn+1 y yn+1 , h = ∆t . . . . . . . . . . . . . . . . . . . . . 22
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

4.1. Estructura funcional de una neurona biológica . . . . . . . . . . . . . 25


4.2. Estructura funcional de una neurona . . . . . . . . . . . . . . . . . . 27

xiii
LISTA DE FIGURAS

4.3. Problemas de sub-ajuste y sobre-ajuste . . . . . . . . . . . . . . . . 33


4.4. RNA de 3 capas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.5. RNA de 4 capas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.6. Estructura de la RNA propuesta en [1] . . . . . . . . . . . . . . . . . 36
4.7. Distribución del error de diferentes elementos . . . . . . . . . . . . . 38
4.8. Error asociado a una neurona . . . . . . . . . . . . . . . . . . . . . . 38
4.9. Ejemplo de entrenamiento de una RNA de [2 × 3 × 2] . . . . . . . . . 39
4.10. Actualización de pesos en modo por lotes . . . . . . . . . . . . . . . . 43
4.11. Superficie de error simple . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.12. Efectos en la trayectoria: (a) con momento, (b) sin momento . . . . . 44

5.1. Resultados experimentales del oscilador caótico de 2 enrollamientos.


(a) datos experimentales, (b) aplicando el filtro sgolayf ilt . . . . . . 48
5.2. Datos experimentales de la variable x: (a) datos sin normalizar y (b)
datos normalizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.3. Promedio del número de epoch empleando datos: (a) simulados y (b)
experimentales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.4. Promedio del tiempo de entrenamiento empleando datos: (a) simulados
y (b) experimentales . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.5. Promedio del MSE obtenido empleando datos: (a) simulados y (b)
experimentales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.6. Variación de TDL para la RNA de 6 capas . . . . . . . . . . . . . . 54
5.7. Tiempo de entrenamiento, actualización de pesos en modo: (a) incre-
mental y (b) por lotes . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.8. MSE obtenido, actualización de pesos en modo: (a) incremental y (b)
por lotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.9. Predicción de la variable x empleando LR = 0.6, M C = 0.9 y a = b =
c = d1 = 0.7. (a) entrenamiento incremental, (b) entrenamiento por
lotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.10. Frecuencia de convergencia de error usando h = 0.01 . . . . . . . . . 58
5.11. Valores de LR y M C con mejor desempeño . . . . . . . . . . . . . . 60
5.12. Frecuencia de convergencia de error utilizando h = 0.1 . . . . . . . . 60
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 . 61

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

6.1. Respuesta: aproximación polinomial de la función tangente hiperbólica 69


6.2. Comparación métodos de aproximación . . . . . . . . . . . . . . . . 70
6.3. Sı́ntesis de la función Kwan . . . . . . . . . . . . . . . . . . . . . . . 71
6.4. Sı́ntesis: neurona de la primera capa . . . . . . . . . . . . . . . . . . . 72
6.5. Sı́ntesis: neurona de la segunda capa . . . . . . . . . . . . . . . . . . 73
6.6. Sı́ntesis: neurona de la tercera capa . . . . . . . . . . . . . . . . . . . 74
6.7. Sı́ntesis: neurona de la cuarta capa . . . . . . . . . . . . . . . . . . . 75
6.8. Sı́ntesis: neurona de la quinta capa . . . . . . . . . . . . . . . . . . . 76
6.9. Sı́ntesis: neurona de la ultima capa . . . . . . . . . . . . . . . . . . . 77
6.10. Sı́ntesis de la RNA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.11. Formas de onda: comunicación serial . . . . . . . . . . . . . . . . . . 78
6.12. Sı́ntesis de la transmisión serial. (a) bloque Rx y (b) bloque Tx . . . 79
6.13. Sı́ntesis de la RNA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.14. Diagrama a bloques general: recepción y transmisión de datos . . . . 81
6.15. Resultados obtenidos del diseño en hardware de la RNA . . . . . . . 82

xv
LISTA DE FIGURAS

xvi
Lista de Tablas

2.1. Valores de los coeficientes a, b, c y d1 . . . . . . . . . . . . . . . . . . 11

3.1. Distribución de la palabra de 26 bits . . . . . . . . . . . . . . . . . . 16


3.2. Especificaciones de la tarjeta Altera Cyclone IV GX FPGA DE2i-150 22
3.3. Reporte final usando FE para un oscilador de 2 enrollamientos . . . . 22

4.1. Ventajas y desventajas del uso de las RNAs . . . . . . . . . . . . . . 27


4.2. Algoritmos de aprendizaje no-supervisado [3] . . . . . . . . . . . . . . 31
4.3. Algoritmos de aprendizaje supervisado [3] . . . . . . . . . . . . . . . 32
4.4. Valores iniciales aleatorios asignados a los diferentes pesos . . . . . . 39
4.5. Algoritmos de entrenamiento . . . . . . . . . . . . . . . . . . . . . . . 44

5.1. Promedio de los resultados obtenidos empleando datos de simulación 50


5.2. Promedio de los resultados obtenidos empleando datos experimentales 50
5.3. Valores de TDL con mejor desempeño, LR = 0.7 y M C = 0.9 . . . . 55
5.4. Resultados obtenidos del algoritmo gradiente descendiente con momen-
to con h=0.1, empleando en todas las neuronas la función de activación
del tipo tangente hiperbólica . . . . . . . . . . . . . . . . . . . . . . . 59
5.5. Resultados obtenidos del algoritmo gradiente descendiente con momen-
to con h=0.1, empleando en la neurona de la última capa una función
de activación del tipo lineal . . . . . . . . . . . . . . . . . . . . . . . 62
5.6. Promedio de los resultados obtenidos empleando datos experimentales
y EL=0.3761 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

6.1. Coeficientes del polinomio n: axn + bxn−1 , ..., cx0 . . . . . . . . . . . . 68


6.2. Valores de pesos y polarizaciones para la primera capa . . . . . . . . 72
6.3. Valores de pesos y polarizaciones para la segunda capa . . . . . . . . 73

xvii
LISTA DE TABLAS

6.4. Valores de pesos y polarizaciones para la tercera capa . . . . . . . . . 74


6.5. Valores de pesos y polarizaciones para la cuarta capa . . . . . . . . . 75
6.6. Valores de pesos y polarizaciones para la quinta capa . . . . . . . . . 76
6.7. Valores de pesos y polarizaciones para la ultima capa . . . . . . . . . 77
6.8. Datos: Altera Cyclone IV GX FPGA DE2i-150 . . . . . . . . . . . . 79
6.9. Reporte final: diseño en hardware de la RNA . . . . . . . . . . . . . . 81

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 87
A.2. Resultados obtenidos del algoritmo gradiente descendiente con momen-
to con h=0.01, empleando en todas las neuronas la función de activa-
ción del tipo tangente hiperbólica . . . . . . . . . . . . . . . . . . . . 88
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 88
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 . . . . . . . . 89

xviii
Lista de Acrónimos

RNA Red neuronal artificial

SNLF Funciones no-lineales saturadas

NARNET Red neuronal auto-regresiva no-lineal

FPGA Arreglo de compuertas lógicas programables en el campo

SCM Multiplicación de una sola constante

Fmax Frecuencia máxima

PWL Aproximación lineal a tramos

VHDL Lenguaje de descripción de hardware de circuitos integrados de muy


alta velocidad

MSE Error cuadrático medio

TDL Vector de lı́nea de retardo

Tansig Función de activación tangente hiperbólica

Purelin Función de activación lineal

LR Rango de aprendizaje

MC Constante de momento

FE Forward Euler

xix
Lista de Acrónimos

RK Runge Kutta

EL Exponente de Lyapunov

MEL Máximo 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.

1.1. Planteamiento del problema


En la naturaleza, existen muchos fenómenos que presentan un comportamiento
caótico. Básicamente, cada fenómeno se observa a través de una forma de onda caótica
y se representa por una serie de tiempo. Las series de tiempo generadas por un sistema
caótico son sensibles a las condiciones iniciales, una pequeña perturbación altera de
manera significativa al sistema, por lo tanto, la dificultad para poder estimar valores
futuros de la serie de tiempo incrementa.
En la literatura existen varios métodos para predecir una serie de tiempo caóti-
ca, como algoritmos genéticos, métodos basados en inteligencia computacional, etc.
Por ejemplo, se han utilizado algoritmos basados en una biblioteca de patrones que
contiene datos pasados de una serie de tiempo, esto para determinar si algunas enfer-
medades tienen incidencia caótica [10, 11]. No obstante, en la mayorı́a de los casos,
no existe suficiente información que pueda ayudar a la predicción, por lo tanto, el uso
de una serie de tiempo permite modelar el comportamiento de estos sistemas e inferir
en su comportamiento.
Se ha demostrado que las RNAs pueden representar cualquier función no lineal con
una alta precisión [12]. Sin embargo, no existe una formula que permita seleccionar
un número óptimo de capas y neuronas que constituyan a una RNA, por lo que el
diseñador debe de enfrentar una serie de obstáculos para lograr una topologı́a de red

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]:

Proporcionan una amplia gama de compuertas lógicas.

Tiene paralelismo en su naturaleza. Por lo tanto, el diseño lógico trabaja en


paralelo.

Existen una amplia gama de herramientas de diseño, programación y sı́ntesis.

1.2. Objetivos

1.2.1. Objetivo general


El objetivo principal de esta tesis es la realización FPGA de una RNA capaz de
reproducir una serie temporal caótica.

1.2.2. Objetivos especı́ficos


Obtener una serie de tiempo caótica a partir de un sistema dinámico no-lineal
basado en SNLF.

Diseñar y simular en MATLAB, una RNA del tipo feed-forward para reproducir
comportamiento caótico.

Sintetizar en un FPGA el sistema predictor de series temporales caóticas.

3
1. Introducción

1.3. Organización de la tesis


En el capitulo 2 se presenta una breve descripción acerca de series de tiempo. Se
describe el modelo matemático de osciladores caóticos de dos enrollamientos basados
en SNLF y utilizando una aproximación PWL. Finalmente se muestran los resultados
de la simulación númerica realizadas en el software MATLAB.
En el capitulo 3 se presenta la sı́ntesis en hardware de osciladores caóticos basado
en SNLF empleando el método de integración númerica FE. Se muestra el diseño
utilizando dos tipos de multiplicadores: multiplicadores de dos variables y multipli-
cadores de una sola constante. Se describen resultados experimentales y los recursos
utilizados.
En el capitulo 4 se presenta una breve introducción acerca de las RNAs, los fun-
damentos biológicos que inspiraron al desarrollo de estas, el modelo neuronal y su
estructura funcional, ası́ como los tipos de funciones de activación utilizadas para
su desarrollo. Se describe brevemente el concepto de aprendizaje supervisado y no
supervisado, además de dos técnicas de actualización de pesos y algunos algoritmos
de entrenamiento disponibles en MATLAB.
En el capitulo 5 se describe una metodologı́a para reconstruir una serie de tiempo
caótica obtenida a partir de un oscilador caóticos de 2 enrollamientos. Comparaciones
entre 3 topologı́as de RNAs son introducidas, donde 2 de ellas se obtuvieron a partir
de la regla de la pirámide geométrica.
En el capitulo 6 se presenta la sı́ntesis en hardware de la RNA de 6 capas. Se
presentan 2 métodos para la sı́ntesis en hardware de la función de activación tangente
hiperbólica: aproximación polinomial y aproximación mediante PWL. Se muestra la
sı́ntesis de la interfaz serial que alimenta a la RNA. Finalmente, se muestran los
resultados obtenidos al reconstruir una serie de tiempo caótica.
Finalmente, en el capitulo 7 se presentan las conclusiones más importantes res-
pecto a los resultados obtenidos en este trabajo y los posibles trabajos futuros.

4
Capı́tulo 2

Series de tiempo caóticas

El comportamiento de un proceso biológico, económico, fı́sico o quı́mico puede ser


descrito por una serie de tiempo. Esta serie representa una medida cuantitativa de
una variable fı́sica xt registrado en un tiempo t, el cual es discreto [14]. En su mayorı́a,
estas observaciones se realizan a intervalos de tiempo equidistantes discretos, donde la
predicción de valores futuros de una serie de tiempo puede llevarse a cabo utilizando
los valores pasados de la variable en estudio. El análisis de las series de tiempo proveen
una descripción compacta de datos observados, los cuales pueden ser usados para
modelar o predecir los valores futuros y ayuda a determinar el comportamiento de las
series de tiempo [14]. Las principales caracterı́sticas que definen a una serie de tiempo
son [15]:

1.- Comportamiento estacionario. Una serie de tiempo es estacionaria cuando su


media y desviación estándar permanecen constantes a través del tiempo.

2.- Estacionalidad. Se refiere a un patrón de fluctuación periódica de la serie de


tiempo. La estacionalidad puede ser descrita mediante:

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].

3.- Linealidad. En el modelado de sistemas no lineales, se requiere que el método


de predicción sea no lineal, debido a que los métodos lineales no son apropiados
para desvelar las complejas dependencias de la serie [16, 15].

5
2. Series de tiempo caóticas

4.- Determinismo y aleatoriedad. Un sistema determinista es considerado caótico


cuando su trayectoria en el plano de fase es sensible y dependiente a las condi-
ciones iniciales, por lo que una serie de tiempo caótica es impredecible a largo
plazo [17, 15].

En términos formales, una serie de tiempo es una secuencia de vectores depen-


dientes del tiempo t [18].

y(t), t = 0, 1, 2, ... (2.0.2)

Las series de tiempo se pueden clasificar de 2 formas [19]:

1.- Estacionarias. Una serie de tiempo es estacionaria cuando es estable a lo largo


del tiempo, es decir, la media y varianza son constantes en el tiempo. Los valores
de la serie tienden a oscilar alrededor de una media constante y la variabilidad
con respecto a esa media también permanece constante en el tiempo

2.- No estacionarias. La tendencia o variabilidad cambian en el tiempo. Los cam-


bios en la media determinan una tendencia a crecer o decrecer a largo plazo,
por lo que la serie no oscila alrededor de un valor constante.

2.1. Serie de tiempo


Una técnica que permite hacer conjeturas sobre el futuro en base a lo ocurrido
en el pasado es el análisis de las series de tiempo. El análisis se realiza usando un
modelo clásico expresado como la suma o producto de tres componentes: tendencia,
estacional y aleatorio. Existen tres modelos para denotar una serie de tiempo que son:
aditivo, multiplicativo y mixto descritos como:

Xt = Tt + Et + It (2.1.1)
Xt = Tt · Et · It (2.1.2)
Xt = Tt · Et + It (2.1.3)

donde Xt es la serie observada en el instante t, Tt es la tendencia, Et es la componente


estacional y It es la componente aleatoria. En [19] se realiza una descripción de cada
uno de estos componentes:

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.

Componente estacional. Existen muchas series de tiempo que presentan cierta


periodicidad, es decir variación de cierto periodo.

Componente aleatoria. No responde a ningún patrón de comportamiento, es


el resultado de factores aleatorios que inciden de forma aislada a una serie de
tiempo.

2.2. Series de tiempo caóticas

2.2.1. Oscilador caótico de dos enrollamientos


Un oscilador de múltiples enrollamientos puede ser descrito a partir del siguiente
conjunto de ecuaciones:

ẋ = y
ẏ = z (2.2.1)
ż = −ax − by − cz + d1 f (x; α, k, h, p, q)

donde x, y, z son las variables de estado; a, b, c y d1 son coeficientes reales positivos


igual a 0.7. Note que para obtener un comportamiento caótico, el valor numérico de
a, b, c y d1 esta en el intervalo [0, 1].
El comportamiento de la SNLF se aproxima por una función PWL la cual esta
determinada con respecto al número de enrollamientos a generar, es decir, a medida
que el número de enrollamientos aumenta, el número de pendientes y niveles de satu-
ración también incrementa. Para el caso de un oscilador caótico de dos enrollamientos,
la función PWL se representa por:

p
X
f (x; α, k, h, p, q) = fi (x; h, k) (2.2.2)
i=−p

donde α corresponde a los puntos de quiebre, k = 1 es el nivel de saturación, h son


los desplazamientos de las pendientes y p, q el nivel máximo alcanzado por el nivel de

7
2. Series de tiempo caóticas

saturación. En la figura 2.1 se observa la celda básica de la SNLF, la cual es descrita


por:

Figura 2.1: Celda básica de la SNLF de 3 segmentos



 k x<α
f (x) = s(x) −α ≤ x ≤ α (2.2.3)

−k x < −α

donde k = 1 es el nivel de saturación, α = 16.5 × 10−3 el punto de quiebre del


nivel de saturación y s(x) = 60.606 la pendiente. Para generar osciladores caóticos de
múltiples enrollamientos se emplea la siguiente terminologı́a:

plateau = ±nk (2.2.4)

Con el objetivo de generar enrollamientos pares, n toma valores impares y, para


generar enrollamientos impares, n toma valores pares. La solución del sistema de ecua-
ciones descrito por (2.2.1), se puede realizar a través de diversos métodos numéricos
como: FE y RK. Estos métodos aproximan la solución del sistema caótico basado en
SNLF a partir del uso de condiciones iniciales. En esta tesis se hace uso del método
de integración numérico FE descrito por:

yn+1 = yn + ∆t f (xn , yn ) (2.2.5)

donde ∆t = 0.01 es el tamaño de paso.


A continuación se muestra el código de MATLAB para simular el oscilador caótico
de 2 enrollamientos, el cual es obtenido a partir de (2.2.1), (2.2.3) y (2.2.5). Como
se puede observar, la obtención de la SNLF se realiza mediante 3 condiciones que
describen a cada una de las pendientes que conforman a la SNLF descrita en (2.2.3).

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á.

Pseudo Código 1. Función de un oscilador caótico de dos enrollamientos


1: function(xn+1 , yn+1 , zn+1 )= two scrolls (xn , yn , zn )
2: xn+1 = xn + ∆t ∗ (yn );
3: yn+1 = yn + ∆t ∗ (zn );
4: if xn > α
5: zn+1 =zn + ∆t ∗ (−a ∗ xn − b ∗ yn − c ∗ zn + d1 ∗ k);
6: elseif xn >= −α & x0 <= α
7: zn+1 =zn + ∆t ∗ (−a ∗ xn − b ∗ yn − c ∗ zn + d1 ∗ m);
8: elseif xn < −α
9: zn+1 =zn + ∆t ∗ (−a ∗ xn − b ∗ yn − c ∗ zn − d1 ∗ k);
10: end
11: end

En la figura 2.2 se muestran los resultados numéricos de un oscilador caótico de


dos enrollamientos.

2.3. Exponente de Lyapunov


El estudio del comportamiento de los sistemas caóticos de múltiples enrollamientos
se ha vuelto de gran importancia para distintas aplicaciones, debido a que se ha en-
contrado que a partir del incremento de enrollamientos el sistema toma una dinámica
más compleja. Sin embargo, se requiere de alguna métrica para determinar el grado
de impredicibilidad de un oscilador caótico [4]. Las principales métricas para carac-
terizar sistemas caóticos son: la dimension fractal, la entropı́a de Kolmogorov-Sinai y
el EL. Entre ellos, el EL proporciona una forma de determinar si el comportamiento
de un sistema es caótico [20].
El EL es una medida asintótica que caracteriza la tasa media de crecimiento (o
contracción) de las pequeñas perturbaciones de las soluciones de sistemas dinámicos,
por ejemplo, de osciladores caóticos. Además, proporcionan una medida cuantitativa
de la sensibilidad de respuesta de un sistema dinámico a pequeños cambios en las
condiciones iniciales [21, 22]. Considerando que al obtener un EL.

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ı́.

Positivo. Conforme transcurre el tiempo las trayectorias tienden a separase de


forma exponencial.

Cero. La distancia entre las trayectorias se mantiene de forma paralela.

Si al menos un exponente es positivo, el sistema presenta comportamiento caótico,


por lo tanto, son dependientes a las condiciones iniciales [23]. El número de EL es igual
al número de variables de estado, y si al menos uno es positivo, esto es un indicador
de caos. Un valor alto del EL positivo indica un gran incremento en el grado de
impredecibilidad del sistema, por lo tanto, el sistema presenta un comportamiento
dinámico más complejo[20].

2.3.1. Oscilador caótico de dos enrollamientos con exponente


de Lyapunov positivo
Un EL positivo indica la presencia de caos en un sistema dinámico, por lo que un
valor máximo garantiza la impredicibilidad del sistema. En la tabla 2.1 se muestran
tres valores de EL ası́ como el valor de cada uno de los coeficientes.

Tabla 2.1: Valores de los coeficientes a, b, c y d1


Coeficientes a, b, c y d1 MEL
1.0000, 1.0000, 0.4997, 1.0000 0.3761
1.0000, 0.7000, 0.7000, 0.2542 0.3425
0.7000, 0.7000, 0.7000, 0.7000 0.2658

En la figura 2.3 se muestran los resultados numéricos de un oscilador de dos


enrollamientos con EL=0.3761 y en la figura 2.4 se muestran los resultados numéricos
de un oscilador de dos enrollamientos con EL=0.3425.

2.4. Resumen del capı́tulo


En este capı́tulo se describe las caracterı́sticas de una serie temporal caótica. La
solución del conjunto de ecuaciones que describen a un oscilador caótico de doble en-
rollamiento se realiza a partir del método de integración numérico FE. Los resultados

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

obtenidos utilizando 3 diferentes valores positivos de EL demuestran que utilizando


el valor más alto, el grado de impredicibilidad del sistema incrementa y por lo tan-
to, el sistema presenta un comportamiento dinámico más complejo. Se observa que
aquellos osciladores que presentan un EL positivo pequeño presentan diagramas de
fase definidos en comparación con aquellos que presentan un valor MEL.

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

El estudio de sistemas dinámicos no lineales se ha convertido en un campo de in-


vestigación muy atractivo en diversas aplicaciones, en especial el estudio y desarrollo
de sistemas caóticos. Experimentalmente se han realizado osciladores de múltiples en-
rollamientos empleando distintos tipos de dispositivos activos y pasivos. Sin embargo,
estos osciladores tienden a tener ligeras variaciones en su comportamiento debido a
factores como: variaciones en la temperatura, rango de voltaje, valor nominal de los
dispositivos, etc., lo que provoca un error inherente al sistema.

El uso de FPGA’s para la implementación de sistemas electrónicos, en especial de


sistemas caóticos, se ha convertido en un tema de interés en la comunidad cientı́fica
debido a la velocidad de procesamiento, flexibilidad y a la disminución del error
inherente al sistema [24]. A continuación se describe la metodologı́a empleada para la
implementación en un FPGA de osciladores caóticos de 2 enrollamientos basado en
SNLF.

La solución del sistema de ecuaciones diferenciales descrito en (2.2.1) se realiza


a partir del uso de métodos de integración numéricos. En este trabajo se utilizó el
método de integración numérico FE descrito como:

yn+1 = yn + ∆t f (xn , yn ) (3.0.1)

Aplicando (3.0.1) en (2.2.1) se obtiene el conjunto de ecuaciones discretizadas


como:

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 ))

donde x0 = y0 = z0 = 0.01 son las condiciones iniciales y ∆t = 0.01 el tamaño de


paso.
En la aritmética computacional, hay dos principios de diseño fundamentales: re-
presentación numérica y la ejecución de las operaciones algebraicas [2]. En la figura
3.1 se muestran las representaciones numéricas convencionales y no convencionales.
El desempeño del sistema dependerá del tipo de representación numérica emplea-
da. En general, los diseños de punto fijo tienen una mayor velocidad y menor costo,
mientras que el uso de punto flotante tiene mayor rango dinámico y no es necesario
realizar un escalamiento numérico, por lo tanto, puede ser atractivo para algoritmos
más complicados [2].

Figura 3.1: Representación numérica utilizada en la aritmética digital [2]

En este documento se utiliza la representación numérica denominada de punto fijo


y se decide utilizar un formato de 4.22 (1 bit de signo, 3 bits para la parte entera
y 22 bits para la parte decimal), a fin de poder obtener resultados con una mayor
precisión. En la tabla 3.1 se muestra la distribución de la palabra utilizada.

Tabla 3.1: Distribución de la palabra de 26 bits


Signo Parte entera Parte decimal
0 000 .1000000000000000000000

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)

Figura 3.2: Bloques básicos de construcción: (a) multiplicador y (b) sumador

A continuación se describe el bloque utilizado para diseñar la SNLF de un oscilador


de 2 enrollamientos descrito por (2.2.3). Al aplicar la formula iterativa (3.0.1) se
obtiene:

 z + ∆t (−ax − by − cz + d1 k) if x < α

zn+1 = z + ∆t (−ax − by − cz + d1 m) if −α ≤ x ≤ α (3.1.1)

z + ∆t (−ax − by − cz − d1 k) if x < −α

Figura 3.3: Bloque comparador

De acuerdo con (3.1.1), es necesario diseñar un bloque comparador que permita


determinar el valor que tomara la función zn+1 ; en caso de generar un oscilador de n-
enrollamientos el bloque comparador deberá de ser modificado de acuerdo al número
de segmentos que describan la función de la SNLF. En la figura 3.3 se muestra el

17
3. Realización en hardware de un oscilador caótico

bloque comparador, donde p01155 = m · d1 = 0.01155 y en la figura 3.4 se muestra el


diseño para obtener la variable zn+1 .

Figura 3.4: Sı́ntesis de zn+1

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.

Figura 3.5: Sı́ntesis de xn+1 y yn+1

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).

Figura 3.6: Esquema general del oscilador caótico, IC=condiciones iniciales

3.2. Multiplicadores de una sola constante


La multiplicación y = tx de una variable x por una constante de punto fijo t puede
ser descompuesta en sumas, restas y desplazamientos binarios [25]. La generación de
este bloque multiplicador se conoce como SCM. Una de las ventajas de SCM es que

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 .

Figura 3.7: Multiplicación por 7110 usando 3 sumadores

3.3. Realización en FPGA

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

Figura 3.9: Sı́ntesis de zn+1 , h = ∆t

3.4. Resultados experimentales


Una vez descritos los bloques que conforman a un oscilador caótico basado en
SNLF, en el software Quartus II se realiza la programación en un FPGA mediante el
lenguaje de descripción VHDL. En la tabla 3.2 se muestran las caracterı́sticas de la

21
3. Realización en hardware de un oscilador caótico

Figura 3.10: Sı́ntesis de xn+1 y yn+1 , h = ∆t

tarjeta Altera Cyclone IV GX FPGA DE2i-150.

Tabla 3.2: Especificaciones de la tarjeta Altera Cyclone IV GX FPGA DE2i-150


Especificación Valor
Fuente de alimentación DC 12 V
Frecuencia del oscilador 50 MHz
Bloques de memoria 720 M9K
Memoria embebida 6,480 Kbits

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.

Tabla 3.3: Reporte final usando FE para un oscilador de 2 enrollamientos


Multiplicadores SCM
de 2 variables
Recursos Disponible Utilizados Utilizados
Registros lógicos dedicados 149760 350 350
Elementos multiplicadores de 9 bits 720 49 0
Pines totales 508 81 86
Fmax de operación 42.19MHz 103.48MHz

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

3.5. Resumen del capı́tulo


En este capı́tulo se presentó la metodologı́a del diseño en hardware de un oscilador
caótico basado en SNLF. A partir del código realizado para la simulación numérica,
es posible realizar la descripción VHDL del oscilador caótico. Los principales bloques
que conforman al oscilador caótico son: sumadores, multiplicadores de dos variables,
multiplexores, comparadores y registros. Se demostró que los multiplicadores de dos
variables son los principales bloques que determinan el rendimiento del sistema y
el uso de SCM mejora en gran medida el rendimiento. Finalmente se muestran los
resultados experimentales de la sı́ntesis del oscilador caótico de 2 enrollamientos en
un FPGA. Con esta metodologı́a de diseño se puede generar osciladores de múltiples
enrollamientos modificando únicamente el bloque comparador e incrementando el
número de pendientes y niveles de saturación que conforman a la SNLF.

23
3. Realización en hardware de un oscilador caótico

24
Capı́tulo 4

Redes neuronales artificiales

4.1. Fundamentos biológicos de las RNAs


Una neurona biológica es una célula especializada en procesar información. Bási-
camente se compone por un soma (cuerpo de la célula) y dos ramificaciones: el axón
y las dendritas. La neurona recibe las señales (breves pulsos periódicos de voltaje, lla-
mados potenciales de acción) de otras neuronas a través de sus dendritas y transmite
las señales generadas por el cuerpo de la célula a través del axón. En la figura 4.1 se
muestran los elementos de una red neuronal biológica.

Soma

Dentritas
Axón

Sinápsis

Figura 4.1: Estructura funcional de una neurona biológica

Los dos comportamientos más importantes de una neurona son:

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

En el soma se suman las entradas de todas las dentritas; si estas entradas


sobrepasan un cierto umbral, entonces se transmitirá un pulso a lo largo del
axón, en caso contrario no transmitirá. Después de un pulso, la neurona no
puede transmitir durante un tiempo de entre 0.5ms a 2ms. A este tiempo se le
llama perı́odo refractario.

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.

4.2. Modelo neuronal y estructura funcional


Una RNA es un conjunto de unidades elementales de procesamiento, llamadas
neuronas o nodos, cuya capacidad de procesamiento se almacena en el nivel de las
conexiones neuronales bajo la forma de pesos sinápticos, el resultado es un proceso
iterativo de adaptación el cual dependerá de la información de la muestra llamada
aprendizaje [30].
Las RNAs contienen tres tipos básicos de neuronas: neuronas de entrada (recogen
los valores de las variables de entrada y forman la denominada capa de entrada);
neuronas intermedias o neuronas ocultas (localizadas entre la capa de entrada y la

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.

• No es necesario conocer los


• Es necesario realizar
detalles matemáticos de las
múltiples pruebas para
RNAs, sólo se requiere estar
determinar la arquitectura
familiarizado con los datos del
adecuada.
trabajo.

• El entrenamiento es largo y
• Permite la solución de
puede consumir varias horas de
problemas no lineales.
computo.

• Son robustas, pueden fallar • Debido a que las redes se


algunos elementos de entrenan en lugar de
procesamiento pero la red programarlas, éstas necesitan
continúa trabajando. muchos datos.

capa de salida, cuya funcionalidad es realizar cálculos no lineales y están organizados


bajo la forma de una o más capas denominadas capas ocultas) y neuronas de salida
(realiza los cálculos de los valores predefinidos con la ayuda de la red neuronal y
comparan estos valores con ciertos valores objetivo o los valores de referencia). En la
figura 4.2 se muestra la estructura funcional de una neurona, donde las j neuronas
están recibiendo señales de entradas xj y los valores w representan los pesos sinápticos
en las dendritas, B la polarización asociada a cada neurona, y la función f (.) se llama
función de activación y define la formación de la salida de la neurona [30].

Figura 4.2: Estructura funcional de una neurona

27
4. Redes neuronales artificiales

El estado interno de una neurona, denotado por j se logra mediante la suma de


los pesos de las entradas ponderadas de esta neurona, es decir, cada peso sináptico
multiplica a cada entrada y considerando que a través del asoma en una neurona
biológica las entradas provenientes de las dentritas son sumadas, se obtiene:
n
X
Y inj = w0j + xi wij (4.2.1)
i=1

donde w0j es llamado el umbral de excitación de la neurona, en caso de que el umbral


w0j es incluido en los valores de entrada, el estado interno o el potencial de la neurona
puede ser escrito como:
n
X
Y inj = xij wij (4.2.2)
i=1

donde x0 = 1 es considerada como una entrada ficticia.


El estado interno estará dado por el producto de las entradas, un bias Bj y el
vector de pesos asociados, de acuerdo a:
n
X
uj = xij wij + Bj (4.2.3)
i=1

Si el peso wi es positivo se habla de una excitación y si el peso es negativo se


considera una inhibición de la entrada.
Asumiendo que el umbral de activación es incorporado en el vector de pesos, la
salida de activación y es dada por:

y = f (u) (4.2.4)

donde f denota la función de activación de la neurona.

4.3. Función de activación


Una neurona se activa si la entrada total supera un cierto umbral, por lo que se
debe de aplicar una función de activación sobre (4.2.3), estas funciones transmiten la
idea de ”disparar sobre un umbral”. Si la función de activación de una neurona es
lineal, se dice que es una neurona lineal, en caso contrario se dice que es una neurona
no lineal. Las funciones de activación más usadas son mostrada a continuación:

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

Función de activación lineal. Al utilizar neuronas con función de activación del


tipo lineal en la capa de salida, los resultados pueden tomar cualquier valor [31].

0 φ(u) = u
Y

0
X

Función de activación sigmoide. Debido a que su derivada siempre es positiva


y cercana a cero para valores grandes positivos o negativos, se pueden utilizar
reglas de aprendizaje definidas para las funciones escalón.

Función tangente hiperbólica. Está función de activación esta relacionada con


la función sigmoide, sin embargo, en este caso el rango de salida se encuentra
entre [−1, 1]. Matemáticamente esta función equivale a tanh(n) con la única
diferencia de que la función tangente hiperbólica responde a una velocidad lige-
ramente mayor en comparación con tanh(n), lo cual, para redes neuronales es

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

4.4. Concepto de entrenamiento y revisión de da-


tos
El tema de aprendizaje usualmente se refiere a un ajuste de parámetros para
reducir la discrepancia entre la salida objetivo en cada caso de entrenamiento y la
salida producida por el modelo. Este tema puede ser dividido en dos grupos que
son: supervisado (o también llamado asociativo) y no supervisado (o también llama-
do auto-organizado), una de las diferencia entre ambas es el tipo de procesamiento
efectuado. La mayorı́a de las reglas de aprendizaje no supervisado son procesadas en
tiempo discreto, por otro lado, los sistemas que operan con aprendizaje supervisado
pueden ser procesados en tiempo continuo [33].

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.

Tabla 4.2: Algoritmos de aprendizaje no-supervisado [3]


Aprendizaje Feedback
Additive Grossberg (AG)
Shunting Grossberg (SG)
Binary Adaptive Resonance Theory (ART1)
Analog Adaptive Resonance Theory (ART2)
Discrete Hopfield (DH)
Continuous Hopfield (CH)
Discrete Bidirectional Associative Memory (BAM)
Adaptive Bidirectional Associative Memory (ABAM)
Unsupervised Learning Temporal Associative Memory (TAM)
Learning Matrix
Drive-Reinforcement
Sparse Distributed Associative Memory (SDM)
Linear Associative Memory (LAM)
Optimal Linear Associative Memory (OLAM)
Fuzzy Associative Memory (FAM)
Learning Vector Quantization (LVQ)
Counterpropagation (CPN)

4.4.2. Aprendizaje supervisado


Es un proceso que incorpora un maestro externo e información global. Las técni-
cas de aprendizaje supervisado incluyen: cuándo desconectar el aprendizaje, decidir
cuánto tiempo y con qué frecuencia debe presentar cada asociación para el entrena-
miento y el rendimiento de suministro de la información de error [3], es decir, de-
termina el comportamiento deseado de la red neuronal generando una señal de error
entre la respuesta deseada y la respuesta del sistema, el vector de error se propaga en
una fase de re-alimentación que tiene como fin la actualización de los pesos sinápticos
de la red neuronal. El proceso de aprendizaje continúa hasta que las señales de error
en la red neuronal alcancen un valor mı́nimo aceptable [3].

31
4. Redes neuronales artificiales

Este aprendizaje se divide en dos sub-categorı́as:

Aprendizaje Estructural. Codifica el apropiado mapeo auto-asociativa y hete-


roasociativa de w.

Aprendizaje Temporal. Codifica una secuencia de parámetros necesariamente


para alcanzar un resultado final

En la tabla 4.3 se muestran ejemplos de algoritmos de aprendizaje supervisado


como: aprendizaje error-corrección, aprendiza reforzado, aprendizaje estocástico.

Tabla 4.3: Algoritmos de aprendizaje supervisado [3]


Aprendizaje Feedback
Perceptron
Adeline/Madaline
Backpropagation (BP)
Boltzmann Machine (BM)
Cauchy Machine (CM)
Unsupervised Learning
Adaptive Heuristic Critic (AHC)
Associative Reward Penalty (ARP)
Avalache Matched Filter (AMF)
Brain-Satate-in-a-Box (BSB)
Fuzzy Cognitive Map (FCM)

4.5. Diseño de una RNA


Debido a que no existe una formula que permita seleccionar un número óptimo
de capas y neuronas que constituyan a una RNA, el diseñador debe de enfrentar una
serie de problemas para lograr una topologı́a de red capaz de resolver un problema
en particular.
Algunos autores recomiendan el uso de una capa oculta y muy pocas neuronas
ocultas para resolver problemas prácticos, sin embargo este número dependerá de la
complejidad del problema.
La elección de un número adecuado de neuronas ocultas es extremadamente im-
portante. Usar muy pocas neuronas puede ser causa de un sub-ajuste, es decir, la
RNA no tendrá los recursos necesarios para resolver el problema. El uso de dema-
siadas neuronas aumentará el tiempo de entrenamiento y con lo cual es imposible

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

(a) Sub-ajuste (b) Respuesta satisfactoria (c) Sobre-ajuste

Figura 4.3: Problemas de sub-ajuste y sobre-ajuste

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 red neuronal, a conti-
nuación se mencionan algunas de estas metodologı́as:

1997, Tamura y Teteishi desarrollaron un método para determinar el número


de neuronas en la capa oculta, donde el número de neuronas ocultas en una red
neuronal de 3 capas es N − 1 y una red neurona de cuatro capas es N2 + 3, el
valor de N es la relación de entrada-objetivo.

2003, G. B. Huang desarrolló un modelo con capacidad de aprendizaje y alma-


cenamiento para una red feedforward con 2 capas ocultas. Su formulación se
basa en que el númeroq
de neuronas para una sola capa oculta estarı́a
q dado por
p N N
Nh = (m + 2)N + 2 m+2 y para 2 capas intermedias Nh = m m+2 .

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

4.5.1. Regla de la pirámide geométrica


Una metodologı́a que permite una buena aproximación para la elección del número
de neuronas ocultas en muchos problemas es la regla de la pirámide geométrica, donde
el número de neuronas sigue una forma piramidal teniendo una disminución de la
entrada a la salida, es decir que el número de neuronas en la capa oculta debe ser
menor al número de neuronas de la entrada [9].

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)

donde h es el número de neuronas en la capa oculta y se cumple con la condición de


que n > h. En la figura 4.2 se muestra la estructura funcional de las neuronas y en la
figura 4.4 se muestra la RNA de 3 capas conformada por: 4 neuronas que constituyen
la denominada capa de entrada, 2 neuronas que constituyen la capa oculta y 1 neurona
que constituye la capa de salida.

Out
Inputs

1 2 3

Figura 4.4: RNA de 3 capas

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

donde h1 corresponde a la primera capa oculta con 4 neuronas, h2 corresponde al


número de neuronas en la segunda capa oculta con 2 neuronas y r es la relación entre
el número de neuronas en la capa de entrada y el número de neuronas en la capa
de salida. En la figura 4.2 se muestra la estructura funcional de cada neurona que
conforman la RNA de 4 capas que se muestra en la figura 4.5.

Out
Inputs

1 2 3 4

Figura 4.5: RNA de 4 capas

4.5.2. Red neuronal de 6 capas


En el trabajo propuesto en [1] se realiza un estudio de la retina de una salamandra
que fue estimulada con destellos de una onda cuadrada periódica (cuya frecuencia
fue modificada para distintos casos pero manteniendo siempre el mismo contraste y

35
4. Redes neuronales artificiales

viceversa), esto con el fin de obtener un registro de señales ERG y posteriormente


filtrar las señales del ERG. Esta metodologı́a es empleada para obtener una serie
de tiempo discreta de una señal continua donde los parámetros de frecuencia de
destellos y contraste tienen un gran efecto en las señales registradas del ERG que
causan bifurcaciones.
En [1] construyen un modelo capaz de modelar el comportamiento caótico del
sistema nervioso de la salamandra; sin embargo no es una tarea fácil debido a la
dinámica altamente compleja y a la no linealidad involucrada en la regeneración
de las señales caóticas y los diagramas de bifurcación, por lo cual se hace uso de
las capacidades antes mencionadas de las RNAs para la solución de este tipo de
problemas.
La topologı́a de la RNA empleada en [1] contiene [7×4×8×5] capas intermedias, la
función de activación empleada es la función tangente hiperbólica ”tansig” que ayuda
a la red a aprender las relaciones complejas entre la entrada y salida. La función de
activación de la ultima capa de la red es una función lineal y los pesos de entrada
tienen asociados una lı́nea de retardo, el cual permite a la red tener una respuesta
dinámica finita a los datos de entrada de series de tiempo.
Inputs

Out

1 2 3 4 5 6

Figura 4.6: Estructura de la RNA propuesta en [1]

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].

4.6.1. Actualización de pesos en modo incremental


Los sistemas neuronales son capaces de resolver problemas mediante la adaptación
a la naturaleza de los datos que reciben, esto mediante el uso de un conjunto de datos
de entrenamiento y un conjunto de datos de verificación de los datos de entrada y
salida. Para comenzar con el entrenamiento se parte asignando de manera aleatoria
todos los pesos wij de las diferentes capas, posteriormente una entrada x del conjunto
de datos de entrenamiento se hace pasar a través de la red neuronal. La red neuronal
calcula un valor (f (x)output ), que se compara con el valor actual (f (x)actual = y). La
medida de error E se calcula a partir de estos dos valores de salida como:

E = f (x)actual − f (x)output (4.6.1)

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)

donde Ej es el error asociado con el j-ésimo elemento, wij es el peso asociado a la


lı́nea de elemento i al elemento j, I la entrada a la unidad i y F (I) es la función de

37
4. Redes neuronales artificiales

activación [37]. En la figura 4.7 se muestra la distribución del error a los diferentes
elementos.

Figura 4.7: Distribución del error de 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:

Figura 4.8: Error asociado a una neurona

wi (new) = wi (old) + αExi (4.6.3)

donde α es la constante de aprendizaje, E = el error medido asociado y xi = la


entrada del elemento.
El valor de entrada xi se pasa a través de la red neuronal (se actualizan el valor
de los nuevos pesos) de nuevo, y los errores, si los hay, se calculan de nuevo. Esta
técnica se itera hasta que el valor de error de la salida final esta dentro de unos
lı́mites prescritos por el usuario. La red neuronal a continuación, utiliza el siguiente
conjunto de datos de entrada-salida. Este método se continúa para todos los datos en
el conjunto de datos de entrenamiento y hace que la red neuronal simule la relación
no lineal entre los conjuntos de datos de entrada-salida. Por último, un conjunto de
datos de verificación son utilizados para verificar qué tan bien la red neuronal puede
simular la relación no lineal [37].
A continuación se muestra un breve ejemplo de lo antes mencionado, para ello
consideremos una RNA de [2 × 3 × 2] que se muestra en la figura 4.9.

38
Figura 4.9: Ejemplo de entrenamiento de una RNA de [2 × 3 × 2]

Primero se asignan aleatoriamente los pesos asignados a las diferentes trayectorias


de los elementos de cada una de las capas (tabla 4.4), como primer punto de datos
consideraremos el valor de las entradas x1 = 0.05 y x2 = 0.02 y una función de activa-
ción del tipo sigmoide descrita en (4.6.4). Los puntos de entrenamiento y verificación
empleados serán en un inicio R1 = 1.0 y R2 = 0.0

Tabla 4.4: Valores iniciales aleatorios asignados a los diferentes pesos


Peso Valor Peso Valor
1 2
w11 0.5 w11 0.30
1 2
w12 0.4 w12 0.35
1 2
w13 0.1 w21 0.35
1 2
w21 0.2 w22 0.25
1 2
w22 0.6 w31 0.45
1 2
w23 0.2 w32 0.30

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

Primera iteración: Utilizando la ecuación (4.6.4) para determinar las salidas de


los diferentes elementos mediante el cálculo de los resultados para cada una de las
capas de redes neuronales.
Salidas de la segunda capa:

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)

Salidas de la tercera capa:

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

Ahora se procede a determinar el error

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.

E12 = O12 (1.0 − O12 ) (0.30 × E13 ) + (0.35 × E23 ) = −0.026




E22 = O22 (1.0 − O22 ) (0.35 × E13 ) + (0.25 × E23 ) = −0.006




E23 = O32 (1.0 − O32 ) (0.45 × E13 ) + (0.30 × E23 ) = −0.004




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

Finalmente, actualizamos los pesos conectados a los elementos de la primera y


segunda capa.
1
w11 = 0.50 + 0.3 × E12 × 0.05 = 0.4996
1
w12 = 0.40 + 0.3 × E22 × 0.05 = 0.3999
1
w13 = 0.10 + 0.3 × E32 × 0.05 = 0.0999
1
w21 = 0.20 + 0.3 × E12 × 0.02 = 0.1998
1
w22 = 0.60 + 0.3 × E22 × 0.02 = 0.5999
1
w23 = 0.20 + 0.3 × E32 × 0.02 = 0.1999

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

neuronal. Los errores a la salida se calculan de nuevo y se redistribuye como antes.


Este proceso es continuó hasta que los errores están dentro de lı́mites aceptables. A
continuación, el segundo punto de datos es ingresado a la red neuronal. Este proceso
se continúa con todos los puntos de datos de entrenamientos.

4.6.2. Actualización de pesos en modo por lotes


En el entrenamiento por lotes los pesos y polarizaciones de la red son solamente
actualizados después de que todas las entradas son presentadas a la red, es decir que
los pesos y las polarizaciones de la red se actualizarán después de que todo el conjunto
de entrenamiento ha sido aplicado a la red. El entrenamiento por lotes procede de la
manera descrita en la figura 5.4, sin embargo, la decisión de cuando dejar de entrenar
es complicada, algunas de las posibilidades son [38]:

Detenerse cuando la función de error promedio para el conjunto de entrena-


miento se hace pequeño.

Parar cuando el gradiente de la función de error promedio para el conjunto de


entrenamiento se hace pequeño.

4.7. Algoritmos de entrenamiento


En la tabla 4.5 se muestran los principales algoritmos de entrenamiento que se
encuentran disponibles en el toolbox de MATLAB.
Cada uno de los algoritmos de entrenamiento antes mencionados presentan diver-
sas ventajas y desventajas dependido del problema a resolver; por ejemplo, trainlm
y trainbfg son rápidos, sin embargo estos métodos tienden a ser menos eficientes pa-
ra RNA con miles de pesos, requieren más memoria y más tiempo de computación.
Para el caso de trainlm, este tiene un mejor rendimiento en la función de ajuste y es
usualmente usado en problemas de reconocimiento de patrones. Por otro lado, cuando
entrenamos grandes redes utilizadas en reconocimiento de patrones trainseg y trainrp
son buenas elecciones debido a que requieren menor memoria y son relativamente
pequeños, además de ser más rápidos que los algoritmos estándar.

42
Figura 4.10: Actualización de pesos en modo por lotes

4.7.1. Gradiente descendiente con momento

Básicamente en descenso por gradiente se parte en algún punto de la función de


error definida sobre los pesos y se trata de mover al mı́nimo global de la función.
En la figura 4.11, cualquier paso en una dirección hacia abajo nos llevara más cerca
del mı́nimo global; sin embargo, para los problemas reales las superficies de error
son más complejas donde numerosos mı́nimos locales pueden hacer que el sistema
no converja al mı́nimo global; por esta razón es incorporado un factor de suavidad
llamado momento.

Figura 4.11: Superficie de error simple

43
4. Redes neuronales artificiales

Tabla 4.5: Algoritmos de entrenamiento


Código Nombre
trainlm Levenberg-Marquardt
trainbr Beyesian Regularization
trainbfg BFGS Quasi-Newton
trainrp Resilient Backpropagation
trainscg Scaled Conjugate Gradient
traincgb Conjugate gradient with Powell/Beale Restarts
traincgf FletcherPower Conjugate Gradient
traincgp Polak-Ribiére Conjugate Gradient
trainoss One step secant
traingdx Variable LEarning Rate Gradient Descent
traingdm Gradient descent with momentum
traingd Gradient Descent

El momento tiene los siguientes efectos [37]:

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.

En la figura 4.12 se muestran los efectos en la trayectoria con y sin momento.

(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

Reproducción de una serie de


tiempo caótica usando RNAs

MATLAB ofrece un toolbox enfocado a la predicción de series de tiempo basado


en RNAs llamado NARNET, la cual puede ser entrenada para predecir series de
tiempo a partir de valores pasados. Matemáticamente una serie de tiempo puede ser
representada como:

y(t) = f (y(t − 1), ..., y(t − d)) (5.0.1)

El uso de series de tiempo caóticas obtenidas a partir de simulaciones numéricas


permiten verificar el correcto funcionamiento de las RNAs ya que el error generado
por los instrumentos de medición es nulo. Sin embargo, es importante verificar el
comportamiento de las RNAs empleando series de tiempo experimentales.
En este trabajo, la adquisición de datos experimentales se realizan con un osci-
loscopio de 200 M Hz con una frecuencia de muestreo de 1G/s. Este instrumento de
medición permite almacenar los datos obtenidos de las series temporales caóticas de
las variables xt , yt y zt . No obstante, los datos experimentales almacenados presentan
componentes de frecuencias no deseadas, por lo cual se debe realizar un filtrado a las
series temporales. En MATLAB, el filtro ”Savitzky-Golay Finite Impulse Response”
realiza un suavizado de los datos experimentales:

y = sgolayf ilt(x, k, f ) (5.0.2)

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

Antes de comenzar con el entrenamiento de una RNA, a menudo es útil normalizar


las entradas y los objetivos de manera que siempre se encuentren dentro de un rango
especifico. En MALTAB, la función mapminmax escala las entradas y objetivos para
que estos se encuentren dentro de un rango de [−1, 1], siempre y cuando los máximos
y mı́nimos sean conocidos. En la figura 5.2 se muestra la normalización de la serie
temporal caótica correspondiente a la variable x.
El entrenamiento de la red multicapa se divide en una serie de pasos, primero se
dividen los datos en subconjuntos. El primer subconjunto denominado conjunto de
entrenamiento, es usado para calcular el gradiente, actualizar todos los pesos y pola-
rizaciones de la RNA. El segundo subconjunto denominado conjunto de validación, el
error en la validación es monitoreado durante el proceso de entrenamiento. Finalmen-
te, el tercer subconjunto es denominado error de la validación, el cual normalmente
decrece durante la fase inicial del entrenamiento al igual que el error del conjunto de
entrenamiento. Sin embargo, cuando la red comienza a sobre ajustar los datos el error
en el conjunto de validación tı́picamente comienza a elevarse.
En este trabajo, el entrenamiento de las RNAs se realiza seleccionando aleato-
riamente el conjunto de datos de entrenamiento, validación y prueba. En MATLAB
usaremos la función dividerand y emplearemos los siguientes valores para cada uno
de los conjuntos:

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

Training Ratio (trainRatio)=0.8


Validation Ratio (valRatio)= 0.1
Test Ratio (testRatio)= 0.1

5.1. Comparación entre 3 distintas topologı́as de


RNAs
A continuación se presentan los resultados obtenidos del entrenamiento de 3 RNAs
mostradas en las figuras 4.4, 4.5 y 4.6. Las pruebas consisten en realizar el entrena-
miento de las RNAs modificando los valores de LR y M C, estos valores se modifican
de acuerdo a un rango de búsqueda de [0, 1] con pasos de 0.1, para cada posible com-
binación se realizó en promedio 30 experimentos. Los parámetros que determinaran el

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.

Tabla 5.1: Promedio de los resultados obtenidos empleando datos de simulación


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 1784.85 41.453 0.00950 830.450 14.4305 0.01063 379.10 19.2495 0.000665
0.9, 0.8 1285.25 30.23675 0.031115 158.800 2.8784 0.01155 356.35 1 5.0811 0.002740
0.7, 0.9 2665.05 63.5408 0.010585 1559.90 27.0850 0.01041 300.85 16.1377 0.001405
0.7, 0.8 1801.8 42.80915 0.052065 329 5.8121 0.02132 368.50 20.7101 0.002890
0.6, 0.9 2657.85 86.32835 0.021520 1745.70 41.1192 0.01044 230.30 12.4239 0.04224
0.6, 0.7 1720.15 44.45485 0.041735 193 3.48535 0.01106 352.40 16.9082 0.011395
0.5, 0.6 1117.2 36.16935 0.0623250 173.25 4.44795 0.01180 262.65 14.15785 0.00271
0.3, 0.9 3634.20 116.258 0.09457 3857.7 96.1525 0.03126 805.10 42.0584 0.011220
0.2, 0.9 2895.15 97.035 0.13442 5790.25 207.8850 0.02148 1533.15 73.59670 0.010675
0.2, 0.8 570.40 17.8166 0.186265 3844.15 103.6147 0.09306 1017.20 55.303 0.011725
0.1, 0.7 2651.45 87.04125 0.164940 8073.15 290.1908 0.082485 1344.40 68.6151 0.041835

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.

Tabla 5.2: Promedio de los resultados obtenidos empleando datos experimentales


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 765.90 154.6087 0.000135 229.05 42.3749 0.02626 206.70 62.0141 0.01406
0.9, 0.8 651.55 131.6434 0.0262000 197.35 36.7112 0.01371 262.50 80.49775 0.001620
0.7, 0.9 854.05 173.2616 0.013180 462.10 96.92925 0.026185 158.50 48.5908 0.00058
0.7, 0.8 817.95 165.9386 0.000165 251.95 46.81955 0.02649 308.70 91.2538 0.000985
0.6, 0.9 1405.15 321.6969 0.000140 354.80 74.6030 0.02623 191.30 60.1968 0.00057
0.6, 0.7 915 185.2244 0.026260 233.10 49.1665 0.01387 285.65 88.0419 0.01381
0.5, 0.6 818.10 202.8650 0.065255 217.35 45.9118 0.02747 287.05 89.79685 0.065275
0.3, 0.9 2177.45 557.2294 0.026250 1325.45 281.012 0.05220 299.10 95.1104 0.01330
0.2, 0.9 2144.45 426.3107 0.143375 1265.75 341.2769 0.09127 330.85 99.0527 0.10432
0.2, 0.8 1425.15 262.0318 0.130285 1711.95 442.9853 0.05222 361.75 107.5476 0.013735
0.1, 0.7 2583.40 626.1664 0.169280 2586.3 680.9546 0.09123 484.65 141.421 0.07881

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

En la figura 5.4 se muestra el promedio de tiempo de entrenamiento para las


3 RNAs. A pesar de que la RNA propuesta en [1] contiene una mayor número de
capas intermedias y neuronas, el tiempo de entrenamiento requerido es menor en
comparación con las RNAs diseñadas a partir de la regla de la pirámide geométri-
ca. Adicionalmente, se puede observar que el tiempo de entrenamiento requerido al
utilizar datos obtenidos experimentalmente requiere de un mayor tiempo de entrena-
miento, debido a que el número de muestras almacenadas es mayor en comparación

51
5. Reproducción de una serie de tiempo caótica usando RNAs

con las muestras obtenidas mediante simulación.

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

5.2. Resultados obtenidos empleando diferentes li-


neas de retardo
A la entrada de cada una de las RNAs se encuentra asociada una TDL que permite
obtener una respuesta dinámica finita a los datos de entrada de la serie de tiempo.
Sin embargo el uso de un TDL presenta desventajas como:

El uso de la memoria esta limitada por la longitud de la TDL, es decir, si se


necesita un gran número de unidades de entrada entonces el cálculo puede ser
lento y serian necesarios muchos datos de entrenamiento.

Un aumento en el número de neuronas y el número de retardos requerirá de una


mayor cantidad de cálculo, lo que presenta una tendencia de sobre-ajuste. Sin

53
5. Reproducción de una serie de tiempo caótica usando RNAs

embargo, esto permite a la RNA resolver problemas de mayor complejidad, es


decir, más capas requieren de más cálculo, pero su uso podrı́a resolver problemas
más complejos de forma más eficiente.

En los resultados mostrados anteriormente se utilizo un T DL igual a ∆ = 3. Sin


embargo, es importante determinar el valor de T DL que otorgue un menor número
de MSE, tiempo de entrenamiento y epoch. Considerando que la RNA que presento
mejor desempeño en la mayorı́a de las combinaciones de LR y M C fue la RNA de 6
capas, se procede a modificar el valor de ∆. En la figura 5.6 se muestran resultados
de distinto valores de LR, M C y ∆, se observa que cuando LR = 0.7 y M C = 0.9 la
RNA presenta un buen desempeño en comparación con las otras combinaciones. En
la tabla 5.3 se observan los valores de ∆ que presentaron un menor MSE.

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
∆ ∆

LR=0.2, MC=0.8 LR=0.7, MC=0.9 LR=0.7, MC=0.8 LR=0.2, MC=0.9

Figura 5.6: Variación de TDL para la RNA de 6 capas

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

5.3. Resultados obtenidos empleando las técnicas


de actualización de pesos: incremental y por
lotes
MATLAB permite realizar la simulación de ambos métodos de actualización de
pesos, en el caso del entrenamiento por lotes se puede realizar usando la función adapt
o train, sin embargo train es generalmente la mejor opción debido a que tiene acceso
a más algoritmos de entrenamiento. En el caso del entrenamiento incremental es
usualmente hecho con adapt, donde el uso de la función adapt dependerá del formato
de la entrada que determinará el método de entrenamiento, es decir, si las entradas son
presentadas como una secuencia entones la RNA es entrenada en modo incremental y
si las entradas son presentadas como vectores concurrentes entonces el entrenamiento
se realizará en modo por lotes.
Para determinar el método de actualización de pesos que permita una mejor re-
producción de la serie temporal caótica, se procede a realizar diferentes simulaciones
utilizando datos obtenidos a partir de simulaciones numéricas. En los resultados ob-
tenidos empleando el método por lotes, la RNA se entrena con la misma secuencia
usada en el entrenamiento incremental y los pesos son actualizados solo después de
que todos las entradas se aplican (por lotes); es decir, que la RNA es simulada en modo
incremental debido a que la entrada es una secuencia, pero los pesos se actualizarán
en modo por lotes.
En la figura 5.8 se observa el MSE obtenido en el entrenamiento de la RNA de 6
capas empleando los dos tipos de entrenamiento. Se observa que en el caso del entre-
namiento por lotes el MSE menor en comparación con el obtenido en el entrenamiento
incremental. Por lo que se puede concluir que el método de actualización de pesos

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

que otorgan un mejor comportamiento es el entrenamiento por lotes, debido a que se


obtiene una mejor predicción y menor tiempo de entrenamiento como se muestra en
la figura 5.9.

5.4. Modificación de la función de activación de la


última capa de la RNA

A partir de los resultados obtenidos, se observó que la RNA de 6 capas propuesta


por [1] provee un mejor desempeño en comparación con las RNAs basadas en la regla
de la pirámide geométrica, además se observó que la técnica de actualización de pesos
por lotes ofrece una mejor reproducción de la serie temporal caótica y cuando ∆ = 3
se obtiene un menor MSE. Finalmente es interesante analizar, como es afectada la
RNA al modificar la función de activación lineal de la ultima capa de la RNA.

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

Datos de validación Datos de validación

−1 Datos de entrenamiento −1 Datos de entrenamiento

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)

Figura 5.9: Predicción de la variable x empleando LR = 0.6, M C = 0.9 y a = b = c = d1 = 0.7. (a)


entrenamiento incremental, (b) entrenamiento por lotes

57
5. Reproducción de una serie de tiempo caótica usando RNAs

5.4.1. Función de activación del tipo tangente hiperbólica en


la última capa de la RNA
En la tabla A.1 se muestran ejemplos de datos obtenidos al realizar una variación
de LR y M C en un rango de [0, 0.6] y pasos h = 0.01, estos valores se resumen en
la tabla A.2. Se muestra el promedio del tiempo de entrenamiento y MSE. Como se
puede observar en la figura 5.10, con estos valores se tiene una baja frecuencia de
convergencia de error.

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

Figura 5.10: Frecuencia de convergencia de error usando h = 0.01

En la tabla A.3 se muestran los datos obtenidos de los experimentos realizados. Se


realizo una variación de LR y M C. En la tabla A.1 se muestra el número de épocas, el
desarrollo (si la red converge al error deseado, entonces E = 0.0001) que presentaron
un mejor desempeño.
En la tabla A.4 se muestra un ejemplo de valores obtenidos durante el entrena-
miento de la RNA realizando una variación de LR y M C en un rango [0, 1] con pasos
h = 0.1. Este tamaño de paso permite realizar una búsqueda más amplia de aquellas
posibles combinaciones que permitan a la red converger al error deseado E = 0.0001.
En la tabla 5.4 se muestra el promedio de los datos almacenados.
En la figura 5.12 se resumen los datos obtenidos. Se observa que a medida que
el valor de M C es mayor y LR menor, la red converge con una mayor frecuencia al
error deseado, por lo tanto, se requiere de un mayor número de épocas y un mayor

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

tiempo de computo. Cuando la red no converge al error deseado, el número de épocas


se reduce. Por ejemplo, veamos el caso cuando cuando M C = 0.5 y LR = 0.1 se
tiene que la red converge al error deseado pero con menor frecuencia, por lo tanto se
requiere un menor número de epochs y por lo tanto menor tiempo de computo.

5.4.2. Función de activación del tipo lineal en la última capa


de la RNA
En la tabla A.4 se muestra un conjunto de datos obtenidos de 5 valores de M C
y se realizo una variación del rango de aprendizaje con pasos (h) de 0.1. En la tabla
A.1 se muestra el número de épocas, el desarrollo (si la red converge al error deseado,
entonces el valor será de M SE = 0.0001) y el valor del gradiente. En la figura 5.13
se muestra un resumen de los datos obtenidos, en el eje y se representa el promedio
de número de épocas para diferentes valores de LR y M C.
De la tabla 5.5 se puede observar a que diferencia de los valores mostrados en
la tabla 5.4 el número de épocas disminuye de manera considerable, en la figura

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

Figura 5.11: Valores de LR y M C con mejor desempeño

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

Figura 5.12: Frecuencia de convergencia de error utilizando h = 0.1

5.14 se muestra para distintos valores de LR y M C, la diferencia entre el número


de épocas al emplear una función de activación lineal y tangente hiperbólica en la
última capa de la RNA. Se observo también que para las posibles combinaciones
las cuales no convergieron al error deseado el promedio de número de épocas fue de
aproximadamente 65, mientras que, por otro lado, cuando la red convergı́a al error

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.

9000 Función de activación tangente hiperbólica


Función de activación lineal
8000
Promedio del número de epocas

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

5.5. Reconstrucción de series de tiempo con dis-


tintos EL

Los resultados mostrados anteriormente, son resultado del entrenamiento de las


RNAs utilizando datos experimentales ası́ como datos obtenidos mediante simulación
de un oscilador caótico basado en funciones saturadas y cuyo valor de los coeficientes
es de 0.7. Sin embargo el valor del EL es pequeño, por lo que es importante analizar
el comportamiento de la red neuronal al predecir una serie de tiempo con un EL
alto. A continuación se muestran los resultados obtenidos al entrenar las 3 RNAs con
distinto número de capas. En la tabla 2.1 se muestran tres valores de EL ası́ como
el valor de cada uno de los coeficientes. En la tabla 5.6 se muestra el promedio de
los resultados de cada una de las RNAs, donde ahora la serie de tiempo presenta un
valor de EL = 0.3761
En la figura 5.15 se muestra la respuesta de las 3 distintas RNAs empleando
distinto valor de LR y M C. Se observa que el comportamiento obtenido no cambia

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

de manera significativa respecto al mostrado en la figura 4.6. En este caso, la RNA


que presenta un mejor comportamiento es la RNA de 6 capas.

Datos de simulación para EL=0.3761


3900 RNA de 6 capas
3600 RNA de 4 capas
ANN de 3 capas
3300
3000
2700
2400
Epoch

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

Figura 5.15: Respuesta del número de epoch para cada RNA

En la figura 5.16 se observa la respuesta en tiempo de los 3 tipos de RNAs. En


comparación a los resultados mostrados en la figura 5.4, se observa que el tiempo de
entrenamiento aumento cuando se tiene un MEL.
En la figura 5.17 se observa el promedio del error obtenido para cada una de las
RNAs, en comparación a los resultados mostrados en la figura 5.5, el MSE no se
modifico de manera significativa.
En la figura 5.18 se muestra un promedio del tiempo (de 20 experimentos reali-

63
5. Reproducción de una serie de tiempo caótica usando RNAs

Datos de simulación para EL=0.3761


1500
RNA de 6 capas
1400 RNA de 4 capas
1300 RNA de 3 capas
1200
1100
1000
900
Tiempo

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

Datos de simulación para EL=0.3761


0.138
RNA de 6 capas
0.128 RNA de 4 capas
RNA de 3 capas
0.118
0.108
0.098
0.088
0.078
MSE

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

Figura 5.17: Respuesta del MSE para cada RNA

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

Figura 5.19: Respuesta de MSE

5.6. Resumen del capı́tulo


En este capı́tulo se presento la metodologı́a para realizar el entrenamiento de 3
RNAs usando series temporales obtenidas mediante simulaciones numéricas y expe-

65
5. Reproducción de una serie de tiempo caótica usando RNAs

rimentos realizados. Se presentan resultados de series temporales obtenidas de osci-


ladores caóticos con diferente valor de EL.
Muchos autores coinciden en que el número de neuronas y capas ocultas de una
RNA estará determinado para la complejidad del problema a resolver. En este trabajo,
se determina que el uso de una RNA con 6 capas otorga un mejor comportamiento
en comparación con RNAs de 4 y 3 capas.
Para determinar el valor de LR y M C se realiza un barrido en rangos de [1, 0].
El tipo de método de actualización de pesos que presento un mejor desempeño fue
el modo por lotes. Se muestran resultados realizando una variación de TDL y como
se observa en los resultados presentados en la tabla 5.3, el valor de TDL con un
menor MSE fue ∆ = 3. Finalmente, se modifica la función de activación tangente
hiperbólica de la última capa de la RNA de 6 capas por una función de activación
lineal; se observa, que esta modificación requiere de mayor número de iteraciones y
cálculos, por lo tanto, la RNA de 6 capas con función de activación de tipo lineal en
la última capa proporciona un mejor desempeño.

66
Capı́tulo 6

Realización en FPGA de una RNA

Existen diferentes formas de realizar la implementación electrónica de una red neu-


ronal: digitales, analógicos e hı́bridos [39, 40], cada uno tiene ventajas y desventajas
especı́ficas dependiendo del tipo y configuración de la RNA, el método de formación
y aplicación [40]. En esta sección se presenta el diseño de la RNA de 6 capas, la cual,
como se observo en la sección anterior fue la que presentó mejor comportamiento al
predecir una serie de tiempo caótico en comparación a aquellas de menor número de
capa. Se presenta también los resultados obtenidos al realizar la implementación en
la tarjeta de desarrollo Altera Cyclone IV GX FPGA, DE2i-150.

6.1. Realización en FPGA de la función de activa-


ción tangente hiperbólica
La implementación digital de la función sigmoide no es sencilla de realizar, debido
a que consiste en una serie exponencial infinita. Una manera de realizar la imple-
mentación digital de la función sigmoide es mediante una aproximación polinomial,
la cual se basa en aproximar una función mediante polinomios. En la tabla 6.1 se
muestran los coeficientes de los polinomios capaces de aproximar la función tanh. En
la figura 6.1 se muestra una comparación entre polinomios de distinto orden respecto
a la función original.
Generalmente, se utiliza una tabla de consulta (lookup table) para la implemen-
tación de la función sigmoide. Sin embargo, al igual que el método de aproximación
polinomial, se requiere de una gran cantidad de hardware. Por esta razón, en esta
tesis se utiliza una aproximación realizada mediante PWL presentada en [41], la cual

67
6. Realización en FPGA de una RNA

Tabla 6.1: Coeficientes del polinomio n: axn + bxn−1 , ..., cx0

Orden Coeficientes del polinomio


3 -0.0707459449768066, 0, 0.791090548038483, 0
4 0,-0.0707459449768066, 0, 0.791090548038483, 0
0.0131011009216309, 0, -0.162841647863388, 0,
5
0.915939420461655,0
0,0.0131011009216309,0,-0.162841647863388,0,
6
0.915939420461655,0
-0.00252285599708557,0,0.0388774573802948,0,
7
-0.236943364143372,0,0.968010038137436,0
0,-0.00252285599708557,0,0.0388774573802948,0,
8
-0.236943364143372, 0,0.968010038137436,0
0.000489681959152222,0,-0.00907894968986511,0,
9 0.0678912699222565, 0,-0.283973813056946,0,
0.988280504941940,0
0,0.000489681959152222,0,-0.00907894968986511,0,
10 0.0678912699222565,0,-0.283973813056946,0,
0.988280504941940,0

se basa en una función por tramos de segundo orden dada por:


(
z(β − θz) for 0 ≤ z ≤ L
Hs1 (z) = (6.1.1)
z(β + θz) −L ≤ z ≤ 0

donde β y θ determinan la pendiente y ganancia de la función Hs1 (z) entre el rango


de −L ≤ z ≤ L. Por lo tanto una función tangente hiperbólica puede se realizada
por:


 1 for L ≤ z
Gs1 (z) = Hs1 for −L < z < L (6.1.2)

−1 z ≤ −L

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

−2.5 −2 −1.5 −1 −0.5 0 0.5 1 1.5 2 2.5

Figura 6.1: Respuesta: aproximación polinomial de la función tangente hiperbólica

funcionamiento de la red no se vea afectado por el error de aproximación obtenido.


A continuación en la figura 6.3 se muestra el bloque utilizado para la obtención
de la función de activación tangente hiperbólica.

6.2. Sı́ntesis en hardware de la RNA de 6 capas


En MATLAB, los elementos del vector de entrada que conforman cada capa de la
RNA son almacenadas en una matriz de pesos como:
 
w1,1 w1,2 ... w1,m
 
 w2,1 w2,2 ... w2,m 
W =



 
wn,1 wn,2 ... wn,m

donde m es el elemento del vector de entrada y n es la neurona en la capa. En el


caso de los elementos correspondientes a las polarizaciones, estos son almacenadas
de la misma manera. Esto permite obtener todos los elementos que conforman a la

69
6. Realización en FPGA de una RNA

0.5

−0.5

−1

−3 −2 −1 0 1 2 3

Sigmoid PWL Polynomial


Function Approximation Approximation

Figura 6.2: Comparación métodos de aproximación

RNA y ası́ realizar la implementación FPGA. En las siguientes secciones, se describe


la implementación FPGA de cada una de las capas que conforman a la RNA de 6
capas propuesta en [1].

6.2.1. Sı́ntesis en FPGA de la primera capa


En la tabla 6.2 se muestran los valores de W y B correspondientes a la primera
capa. A la salida de cada neurona se obtendrá una respuesta dada por:

L1,n = f (In1 Wn,1 + In2 Wn,2 + In3 Wn,3 + Bn ) (6.2.1)

donde n corresponde al número de neurona en la primera capa, l la salida que se


obtendrá, W los pesos correspondientes a cada entrada, B la polarización y f () co-
rresponde a la función de activación de dicha neurona. En la figura 6.4 se mues-
tra la sı́ntesis de las neuronas correspondientes a la primera capa. La multiplicación

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

Figura 6.3: Sı́ntesis de la función Kwan

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

Tabla 6.2: Valores de pesos y polarizaciones para la primera capa

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

Figura 6.4: Sı́ntesis: neurona de la primera capa

6.2.2. Sı́ntesis en FPGA para la segunda capa


En la tabla 6.3 se muestran los valores de W y B correspondientes a las neuronas
de la segunda capa. En este caso el valor a la salida de cada neurona que se encuentre
en esta capa estará dado por:

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.

6.2.3. Sı́ntesis en FPGA para la tercera capa


En la tabla 6.4 se muestran los valores de W y B correspondientes a las neuronas
de la tercera capa. En este caso el valor a la salida de cada neurona que se encuentre

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

Figura 6.5: Sı́ntesis: neurona de la segunda capa

en esta capa estará dado por:

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 )

En la figura 6.6 se muestra la sı́ntesis de la neurona que conforman a esta capa.

73
6. Realización en FPGA de una RNA

Tabla 6.4: Valores de pesos y polarizaciones para la tercera 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

Figura 6.6: Sı́ntesis: neurona de la tercera capa

6.2.4. Sı́ntesis en FPGA para la cuarta capa

En la tabla 6.5 se muestran los valores de W y B para la cuarta capa. El valor a


la salida de cada neurona que se encuentre en esta capa estará dado por:

L4,n = f (In1 Wn,1 + In2 Wn,2 + In3 Wn,3 + In4 Wn,4 + Bn ) (6.2.4)

En la figura 6.7 se muestra la sı́ntesis de la neurona que conformará esta capa.

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

Figura 6.7: Sı́ntesis: neurona de la cuarta capa

6.2.5. Sı́ntesis en FPGA para la quinta capa

En la tabla 6.6 se muestran los valores de W y B para la quinta capa. En este


caso el valor a la salida de cada neurona que se encuentre en esta capa estará dado
por:

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

En la figura 6.8 se muestra la neurona correspondiente a la quinta capa.

Tabla 6.6: Valores de pesos y polarizaciones para la quinta capa


Pesos Polarizaciones
m=1 m=2 m=3 m=4 m=5 m=6 m=7 m=8
n=1 -0.6284999847 -0.5369999409 -0.3287000656 -0.9073998928 -0.7920000553 0.5106999874 0.3002998829 0.5824999809 1.7090001106
n=2 0.8835999966 -0.4948000908 0.9091999531 -0.0666799545 -0.0324499607 0.1284999847 -0.7590999603 0.6930999756 -0.8559999466
n=3 -0.8826999664 -0.6449000835 0.4704999924 0.1129999161 0.086920023 -0.9237000942 0.59010005 -0.7123999596 -0.1122999191
n=4 0.7960000038 -0.7704000473 0.4205999374 0.0086669922 0.3777999878 -0.6303999424 0.7335000038 0.6059000492 0.9070999622
n=5 0.3822000027 -0.0460300446 -0.236399889 1.2980000973 -0.2163999081 0.4400000572 -0.7781999111 -0.4423999786 1.7119998932

Figura 6.8: Sı́ntesis: neurona de la quinta capa

6.2.6. Sı́ntesis en FPGA para la sexta capa


En la tabla 6.7 se muestran los valores de W y B para la sexta capa. En este caso
el valor a la salida de cada neurona que se encuentre en esta capa estará dado por:

76
L6,n = f (In1 Wn,1 + In2 Wn,2 + In3 Wn,3 + In4 Wn,4 + Bn ) (6.2.6)

Tabla 6.7: Valores de pesos y polarizaciones para la ultima capa


Pesos Polarizaciones
m=1 m=2 m=3 m=4 m=5
n=1 -0.0549499989 -0.0297698975 -1.2409999371 -0.299200058 0.0297698975 0.0297698975

En la figura 6.12 se muestra la sı́ntesis de la neurona de la sexta capa.

Figura 6.9: Sı́ntesis: neurona de la ultima capa

En la figura 6.10 se muestra el diagrama a bloques de la red neuronal, a la salida


de cada neurona se encuentra un registros sin habilitación, esto con el fin de eliminar
el retardo que se genere a través de la trayectoria lógica.

6.3. Transmisión de datos de entrada empleando


comunicación serial
La comunicación serial involucra el envı́o de un bit cada vez, donde el número
total de bits transmitidos por segundo es llamado baud rate [42]. Cada byte se divide
en 8 bits y se transmite de uno en uno, algunos indicadores están asociadas con él
para marcar el comienzo y el final de cualquier byte transmitido. Esto es necesario

77
6. Realización en FPGA de una RNA

Figura 6.10: Sı́ntesis de la 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.

Figura 6.11: Formas de onda: comunicación serial

Una manera para alimentar a la RNA mostrada en la figura 6.12 es a través de


una tabla de consulta. Sin embargo, este tipo de tablas afecta en gran medida al

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.

Tabla 6.8: Datos: Altera Cyclone IV GX FPGA DE2i-150


Componente Datos
Oscillator clock input 50MHz
Baude rate 115200
Parity check bit None
Data bits 8
Stop bits 1
Flow control (CTS/RTS) ON

(a) (b)

Figura 6.12: Sı́ntesis de la transmisión serial. (a) bloque Rx y (b) bloque Tx

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

Figura 6.13: Sı́ntesis de la RNA

En la figura 6.14 se muestra el diagrama a bloques general de la transmisión y


recepción de los datos utilizando comunicación serial, como se puede observar a la
salida del bloque Blq:ANN Rx Tx se encuentra un registro, el cual será habilitado
al haber transcurrido los 10 ciclos de reloj requeridos por la red neuronal, posterior-
mente, al dato obtenido se le concatenarán 6 bits (para ası́ formar una palabra de
32 bits), esta palabra será divida en 4 bytes los cuales serán seleccionados por un
multiplexor para finalmente transmitirlos.

6.4. Resultados experimentales


MATLAB es el software encargado de la transmisión y recepción de los datos, en
la figura 6.15 se muestran los resultados obtenidos. Como se puede observar, el error
obtenido al realizar la implementación de la RNA incrementa en las transiciones nega-
tivas. Asimismo, a pesar de que la señal que alimenta a la RNA se encuentra limitada

80
Figura 6.14: Diagrama a bloques general: recepción y transmisión de datos

por la longitud de la palabra digital y la exactitud de las operaciones realizadas por


los bloques básico de operación, el nivel de error obtenido entre la señal original y la
señal reconstruida es mı́nimo.
En la tabla 6.9 se muestra el resumen obtenido del total de recursos utilizados por
RNA. Como se puede observar en la figura 6.3, el uso de un multiplicador convencional
es inevitable y a pesar de haber utilizado el bloque multiplicador mostrado en la figura
3.2(a), la Fmax de operación de la RNA es menor en comparación con la frecuencia de
reloj del FPGA, por esta razón, es necesario crear un divisor de frecuencia que otorgue
la frecuencia requerida por el sistema para ası́ asegurar un buen funcionamiento de
este.

Tabla 6.9: Reporte final: diseño en hardware de la RNA


Recursos Disponible Utilizados Porcentaje
Elementos lógicos totales 146760 38428 26 %
Total de funciones combinacionales 146760 38191 26 %
Registros lógicos dedicados 149760 1127 < 1%
Pines totales 508 34 7%
Elementos multiplicadores de 9 bits 720 196 27 %
Fmax de operación 26.32M Hz

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

Figura 6.15: Resultados obtenidos del diseño en hardware de la RNA

6.5. Resumen del capı́tulo


En este capı́tulo se presentó la sı́ntesis de bloques básicos para el diseño de la
función de activación tangente hiperbólica empleando 2 diferentes métodos de apro-
ximación: polinomial y PWL. También se muestra la sı́ntesis de las neuronas que
componen a cada capa de la RNA de 6 capas. La sı́ntesis de la RNA se lleva acabo
utilizando bloques de operación: sumas, restas y SCM. Finalmente, como se observa
en la figura 6.15 el error que existe entre la señal original y la señal reproducida por
la RNA en FPGA utilizando comunicación serial presentó un nivel de error bajo.

82
Capı́tulo 7

Conclusiones y trabajo futuro

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.

7.2. Trabajos a futuro


Con base a los resultados obtenidos, algunas variantes que podrı́an seguir como
trabajo a futuro son:

Realizar investigación para reproducir series de tiempo de osciladores caóticos


de más de 2 enrollamientos y utilizando diferentes valores de MEL, para poste-
riormente, realizar su descripción en VHDL.

Analizar otros tipos de metodologı́as que permitan obtener un número adecuado


de neuronas y capas ocultas, además de, verificar el comportamiento de la RNA
aplicando otro tipo de algoritmos de entrenamiento.

Utilizar series de tiempo obtenidas a partir de osciladores de múltiples enrolla-


mientos basados en SNLF, ası́ como de otro tipo de osciladores.

84
Apéndices

85
Apéndice

Resultados de las simulaciones

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

E. Tlelo-Cuautle, J.J. Rangel-Magdaleno, A.D. Pano-Azucena, P.J. Obeso-Rodelo,


J.C. Nuñez-Perez, FPGA Realization of Multi-Scroll Chaotic Oscillators, Communi-
cations in Nonlinear Science and Numerical Simulation, vol. 27, no. 1-3, pp. 66-80,
ISSN: 1007-5704, October 2015. DOI: http://dx.doi.org/10.1016/j.cnsns.2015.03.003

91
B. Publicaciones

92
Bibliografı́a

[1] M. Molaie, R. Falahian, S. Gharibzadeh, S. Jafari, and J. C. Sprott, “Artificial


neural networks: powerful tools for modeling chaotic behavior in the nervous
system,” Frontiers in computational neuroscience, vol. 8, no. 40, pp. 1–3, 2014.

[2] U. Meyer-Baese, Digital Signal Processing with Field Programmable Gate Arrays,
3rd ed., 2007.

[3] P. K. Simpson, Artificial Neural Systems Foundations, Paradigms, Application


and Implementation. Pergamon Press, 1990.

[4] J. J. Borjón Nieto, Caos orden y desorden, en el sistema monetario y financiero


internacional, 1st ed. Plaza y Valdés, S. A. de C. V., 2002.

[5] P. L. Bueno dos Santos, “Previsibilidade em sistemas caóticos utilizando sistemas


neuro-difusos,” Master’s thesis, Instituto Nacional De Pesquisas Espaciais, 2014.

[6] A. R. Omondi and J. C. Rajapakse, FPGA Implementations of Neural Networks.


Springer, 2006.

[7] J. M. Rodrı́guez and M. H. Garzón, “Neural networks can learn to approximate


autonomous flows fluids and waves: Recent trends in applied analysis,” Contem-
porary Mathematics, vol. 440, pp. 197–205, 2007.

[8] K. G. Sheela and S. N. Deepa, “Review on methods to fix number of hidden


neurons in neural networks,” Mathematical Problems in Engineering, vol. 2013,
p. 11. [Online]. Available: http://dx.doi.org/10.1155/2013/425740

[9] T. Masters, Practical Neural Network Recipes in C++. Academic Press, Inc.,
1993.

93
BIBLIOGRAFÍA

[10] W. Ditto and T. Munakata, “Principles and applications of chaotic systems,”


Commun. ACM, vol. 38, no. 11, pp. 96–102, Nov. 1995. [Online]. Available:
http://doi.acm.org/10.1145/219717.219797

[11] G. Sugihara and R. M. May, “Nonlinear forecasting as a way of distinguishing


chaos from measurement error in time series,” vol. 344, pp. 734–741, 1990.
[Online]. Available: http://dx.doi.org/10.1038/344734a0

[12] G. S. D. S. Gomes and T. B. Ludermir, “Optimization of the weights


and asymmetric activation function family of neural network for time series
forecasting,” Expert Syst. Appl., vol. 40, no. 16, pp. 6438–6446, Nov. 2013.
[Online]. Available: http://dx.doi.org/10.1016/j.eswa.2013.05.053

[13] S. Sahin, Y. Becerikli, and S. Yazici, “Neural network implementation in


hardware using fpgas,” in Neural Information Processing, ser. Lecture Notes
in Computer Science, I. King, J. Wang, L.-W. Chan, and D. Wang, Eds.
Springer Berlin Heidelberg, 2006, vol. 4234, pp. 1105–1112. [Online]. Available:
http://dx.doi.org/10.1007/11893295 122

[14] T. Fathima and V. Jothiprakash, “Behavioural analysis of a time series–a


chaotic approach,” Sadhana, vol. 39, no. 3, pp. 659–676, 2014. [Online].
Available: http://dx.doi.org/10.1007/s12046-014-0249-2

[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

[20] V. H. C. Gómez, “Optimización de osciladores caóticos aplicando algoritmos evo-


lutivos,” Master’s thesis, Instituto Nacional de Astrofı́sica Óptica y Electrónica
INAOE, 2009.

[21] V. Carbajal-Gómez, E. Tlelo-Cuautle, and F. Fernández, “Optimizing


the positive lyapunov exponent in multi-scroll chaotic oscillators with
differential evolution algorithm,” Applied Mathematics and Computation,
vol. 219, no. 15, pp. 8163 – 8168, 2013. [Online]. Available: http:
//www.sciencedirect.com/science/article/pii/S0096300313001793

[22] L. Dieci, “Jacobian free computation of lyapunov exponents,” Journal of


Dynamics and Differential Equations, vol. 14, no. 3, pp. 697–717, 2002. [Online].
Available: http://dx.doi.org/10.1023/A%3A1016395301189

[23] P. G. Gil, “Long term prediction, chaos and artificial neural networks. where is
the meeting point?” Engineering Letters, vol. 15, agust 2007.

[24] E. Tlelo-Cuautle, J. Rangel-Magdaleno, A. Pano-Azucena, P. Obeso-Rodelo,


and J. Nunez-Perez, “Fpga realization of multi-scroll chaotic oscillators,”
Communications in Nonlinear Science and Numerical Simulation, vol. 27, no.
1–3, pp. 66 – 80, 2015. [Online]. Available: http://www.sciencedirect.com/
science/article/pii/S1007570415000878

[25] Y. Voronenko and M. Püschel, “Multiplierless multiple constant multiplication,”


ACM Trans. Algorithms, vol. 3, no. 2, May 2007. [Online]. Available:
http://doi.acm.org/10.1145/1240233.1240234

[26] Y. Takahashi, T. Sekine, and M. Yokoyama, “A comparison of multiplierless mul-


tiple constant multiplication using common subexpression elimination method,”
in Circuits and Systems, 2008. MWSCAS 2008. 51st Midwest Symposium on,
Aug 2008, pp. 298–301.

[27] “Spiral software/hardware generation for dsp algorithms,” accessed: 2014-12-20.


[Online]. Available: www.spiral.net

95
BIBLIOGRAFÍA

[28] P. P. Cruz, inteligencia Artificial con aplicaciones a la Ingenierı́a, 1st ed. Al-
faomega, 2010.

[29] L. Fausett, Fundamental of neural network architectures, algorithms and appli-


cation. Prentice-Hall.

[30] J. D. Rairán Antolines, “Reconstruction of periodic signals using


neural networks,” Tecnura, vol. 18, pp. 34 – 46, 01 2014. [On-
line]. Available: http://www.scielo.org.co/scielo.php?script=sci arttext&pid=
S0123-921X2014000100004&nrm=iso

[31] J. A. Jaramillo, “Laboratorio: Redes con conexiones hacia adelante,” Pontificia


Universidad Católica del Ecuador. [Online]. Available: http://www.flacsoandes.
edu.ec/comunicacion/aaa/imagenes/publicaciones/pub 30.pdf

[32] M. Dorofki, A. H. Elshafie, O. Jaafar, O. A. Karim, , and S. Mastura, “Compa-


rison of artificial neural network transfer functions abilities to simulate extreme
runoff data,” International Conference on Environment, Energy and Biotechno-
logy, vol. 33, pp. 39–44, 2012.

[33] M. M. Rodrı́guez, “Diseño y optimización de bloques básicos para la realización


de redes neuronales artificiales,” Master’s thesis, Instituto Nacional de Astrofisi-
ca, Óptica y electrónica, 1997.

[34] A. NG, “The problem of overfitting,” Stanford University. [Online]. Available:


https://class.coursera.org/ml-005/lecture/39

[35] J. M. Coffrey, “Understanding neural batch training: A tutorial,” Visual


Studio Magazine, August 2014, accessed: 2014-12-20. [Online]. Available:
https://visualstudiomagazine.com/articles/2014/08/01/batch-training.aspx

[36] D. R. Wilson and T. R. Martinez, “The general inefficiency of batch training


for gradient descent learning,” Neural Netw., vol. 16, no. 10, pp. 1429–1451, dec
2003. [Online]. Available: http://dx.doi.org/10.1016/S0893-6080(03)00138-2

[37] T. J. Rose, Fuzzy Logic with Engineering Applications, 3rd ed. Wiley, 2010.

[38] W. S. Sarle, “Subject: What are batch, incremental, on-line, off-line,


deterministic, stochastic, adaptive, instantaneous, pattern, constructive,

96
and sequential learning,” accessed: 2015-01-20. [Online]. Available: ftp:
//ftp.sas.com/pub/neural/FAQ2.html

[39] M. A. Bañuelos, “Diseño y construcción de una neurocomputadora analógica,”


Master’s thesis, Facultad de Ingenierı́a, UNAM, 1997.

[40] M. A. Bañuelos-Saucedo, J. Castillo-Hernández, S. Quintana-Thierry, R. Da-


mián-Zamacona, R. E. C. J. Valeriano-Assem, R. Fuentes-González, G. Calva-
Olmos, and J. L. Pérez-Silva, “Implementation of a neuron model using fpgas,”
Journal of Applied Research and Technology, vol. 1, pp. 248–255, 2003.

[41] H. Kwan, “Simple sigmoid-like activation function suitable for digital hardware
implementation,” Electronics Letters, vol. 28, no. 15, pp. 1379–1380, July 1992.

[42] J. W. Valvano, Introduction to Embedded Systems: Interfacing to the Freescale


9S12, 1st ed. Cengage Learning, 2010.

[43] G. Subrata, 8051 Microcontroller: Internals, Instructions, Programming AND


Interfacing, 1st ed. Pearson Education, 2010.

[44] De2i-150 Development kit, FPGA system user manual, Terasic Technologies,
2014.

97

Das könnte Ihnen auch gefallen