aplicación de redes neuronales mlp a la prediccion de un paso en

Anuncio
FUNDACION UNIVERSITARIA KONRAD LORENZ
FACULTAD DE INGENIERIA DE SISTEMAS
APLICACIÓN DE REDES NEURONALES MLP
A LA PREDICCION DE UN PASO EN SERIES DE TIEMPO
DIEGO FERNANDO SOCHA GARZON
GILBERTO ANTONIO ORTIZ HERRADA
BOGOTA D.C., MAYO DE 2.005
Director
Ing. PERVYS RENGIFO RENGIFO
TABLA DE CONTENIDO
1. SERIES DE TIEMPO ________________________________ _______________ 9
1.1. INTRODUCCIÓN ______________________________________________ 9
1.2. DEFINICIÓN________________________________ __________________ 10
1.3. OBJETIVO DEL ANÁLISIS DE UNA SERIE DE TIEMPO _____________ 11
1.4. TERMINOS RELACIONADOS AL ANÁLISIS DE UNA SERIE DE TIEMPO12
1.4.1. VARIABLE ALEATORIA ______________________________________12
1.4.2. PROCESOS ESTOCÁSTICOS ________________________________13
1.4.3. OPERADORES_____________________________________________14
1.4.4. MEDIA____________________________________________________15
1.4.5. VARIANZA ________________________________________________15
1.4.6. COVARIANZA______________________________________________16
1.4.7. FUNCIÓN DE CORRELACIÓN ________________________________16
1.4.8. FUNCIONES DE AUTOCOVARIANZA __________________________17
1.4.9. FUNCIÓN DE AUTOCORRELACIÓN ___________________________17
1.4.10. FUNCIÓN DE AUTOCORRELACIÓN PARCIAL __________________19
1.4.11. ESTACIONARIEDAD ________________________________ _______20
1.4.12. ERGODICIDAD____________________________________________21
1.4.13. CORRELOGRAMA _________________________________________21
1.4.14. RUIDO BLANCO________________________________ ___________23
1.5. COMPONENTES DE UNA SERIE DE TIEMPO______________________ 25
1.6. ANÁLISIS DESCRIPTIVO DE UNA SERIE DE TIEMPO ______________ 25
1.7. MÉTODOS DE PRONÓSTICO ________________________________ __ 28
1.7.1. CONSIDERACIONES PRELIMINARES _________________________28
1.7.2. MÉTODOS CUALITATIVOS O SUBJETIVOS ____________________29
1.7.3. MÉTODOS CUANTITATIVOS_________________________________30
1.7.4. MÉTODOS DE DESCOMPOSICIÓN ___________________________31
1.7.5. MÉTODOS DE SUAVIZAMIENTO _____________________________31
1.8. MODELOS AUTORREGRESIVOS________________________________ 32
1.8.1. AR(1) ____________________________________________________32
1.8.2. AR(P) ____________________________________________________33
1.9. MODELOS DE PROMEDIO MÓVIL _______________________________ 34
1.9.1. MA(Q)____________________________________________________34
1.10. MODELO AUTORREGRESIVO CON PROMEDIO MÓVIL____________ 35
1.11. MODELO ARMA (P,Q) ________________________________________ 36
1.11. CRITERIOS DE EVALUACIÓN DE PREDICCIONES ________________ 36
1.12. OTROS MÉTODOS NO CONVENCIONALES ______________________ 38
1.13. APLICACIONES DE LAS SERIES DE TIEMPO ____________________ 40
2. REDES NEURONALES ____________________________________________ 42
2. 1. INTRODUCCION _____________________________________________ 42
2.2. HISTORIA ___________________________________________________ 43
2.3. NEURONA BIOLÓGICA ________________________________________ 46
2.4. MODELO DE NEURONA ARTIFICIAL _____________________________ 49
2.4.1. MODELO GENERAL ________________________________________50
2.4.2. MODELO ESTANDAR ________________________________ _______54
2.5. REDES NEURONALES Y ARQUITECTURAS ______________________ 55
2.5.1. TIPOS DE ARQUITECTURA __________________________________56
2.6. APRENDIZAJE DE UNA RED NEURONAL ________________________ 58
2.6.1. FASE DE APRENDIZAJE. CONVERGENCIA_____________________59
2.6.2. FASE DE RECUERDO O EJECUCIÓN. ESTABILIDAD _____________61
2.7.
CLASIFICACION DE LOS MODELOS NEURONALES _____________ 63
2.8. COMPUTABILIDAD NEURONAL _________________________________ 64
2.9. REALIZACIÓN Y APLICACIONES DE LAS REDES NEURONALES____ 65
2.10. REDES NEURONALES SUPERVISADAS ________________________ 67
2.10.1. ASOCIADOR LINEAL ________________________________ _______67
2.10.2. PERCEPTRON SIMPLE_____________________________________71
2.10.3. ADALINE _________________________________________________77
2.10.4. EL PERCEPTRON MULTICAPA (MLP)_________________________79
2.11. CAPACIDAD DE GENERALIZACIÓN DE LA RED__________________ 86
2.11.1. VALIDACIÓN CRUZADA (CROSS-VALIDATION) ________________87
2.11.2. NÚMERO DE EJEMPLOS DE ENTRENAMIENTO________________89
2.11.3. REDUCCIÓN DEL TAMAÑO DE LA ARQUITECTURA DE UNA RED 90
3.
MATLAB TOOLBOX ____________________________________________ 92
3.1. INTRODUCCIÓN ________________________________ ______________ 92
3.2. BACKPROPAGATION _________________________________________ 92
3.3. RED FEEDFORWARD _________________________________________ 95
3.4. CREANDO UNA RED (newff) ___________________________________ 96
3.5. SIMULACIÓN (sim) ____________________________________________ 97
3.6. ENTRENAMIENTO ____________________________________________ 98
3.6.1. ENTRENAMIENTO POR LOTE (train)___________________________98
3.6.2. ENTRENAMIENTO POR INCREMENTAL (traingd)________________99
3.7. ENTRENAMIENTO RÁPIDO ___________________________________ 102
3.7.1. TAZA DE APRENDIZAJE (traingda, traingdx) ____________________ 102
3.7.2. REZAGO (TRAINRP) _______________________________________ 104
3.8. ALGORITMOS DE GRADIENTE CONJUGADO ____________________ 105
3.8.1. ACTUALIZACIÓN DE FLETCHER-REEVES (traincgf) _____________ 105
3.8.2. ACTUALIZACIÓN DE POLAK-RIBIÉRE (traincgp)________________ 107
3.8.3. RESTABLECIMIENTO DE POWELL-BEALE (traincgb) ____________ 108
3.8.4. GRADIENTE CONJUGADO ESCALADO (TRAINSCG) ____________ 108
3.9. RUTINAS DE BÚSQUEDA LINEAL ______________________________ 109
3.9.1. BÚSQUEDA DE SECCIÓN DORADA (srchgol) __________________ 110
3.9.2. BÚSQUEDA DE BRENT (srchbre)_____________________________ 110
3.9.3. BÚSQUEDA BISECCIÓN-CÚBICA HÍBRIDA (srchhyb) ____________ 111
3.9.4. BÚSQUEDA DE CARAMBOLA (srchcha)_______________________ 111
3.9.5. BACKTRACKING (srchbac) ________________________________ __ 111
3.10. ALGORITMOS CUASI-NEWTON_______________________________ 112
3.10.1. ALGORITMO DE BFGS (trainbgf) ____________________________ 112
3.10.2. ALGORITMO SECANTE DE UN PASO (trainoss)_______________ 113
3.10.3. LEVENBERG-MARQUARDT (trainlm)_________________________ 114
3.10.4. LEVENBERG-MARQUARDT DE MEMORIA REDUCIDA (trainlm) __ 115
3.11. REGULARIZACIÓN ________________________________ _________ 116
3.11.1. FUNCIÓN DE DESEMPEÑO MODIFICADA ____________________ 116
3.11.2. REGULARIZACIÓN AUTOMATIZADA (trainbr) _________________ 117
3.12. DETENCIÓN TEMPRANA ____________________________________ 119
3.13. PREPROCESO Y POSTPROCESO_____________________________ 121
4. REDES NEURONALES Y SERIES DE TIEMPO _______________________ 124
4.1. REDES NEURONALES EN LA PREDICCION _____________________ 124
4.1.1. ALGUNOS TRABAJOS DE PREDICCIÓN CON REDES NEURONALES
________________________________ ______________________________ 125
4.2. DESARROLLO DE LA INVESTIGACION _________________________ 126
4.3. ANALISIS DE LAS SERIE ________________________________ _____ 127
ANEXOS ________________________________ _________________________ 167
CONCLUSIONES__________________________________________________ 179
INTRODUCCIÓN
La neces idad de explorar parte de las aplicaciones y posibilidades que brindan las
redes neuronales artificiales son múltiples y en diferentes campos, esto debido a
que pueden ser entrenadas mediante algoritmos para hacer una función
determinada. La posibilidad de hacer híbridos con otras técnicas como los
algoritmos genéticos hace que las redes neuronales artificiales multipliquen sus
posibilidades de aplicación y se extiendan a diversos campos. Dentro de este orden
de ideas surge la necesidad de hacer predicciones de datos futuros basados en
datos pasados y presentes,
este fenómeno es importante para saber el
comportamiento aproximado de una variable y sus aplicaciones son infinitas desde
el comportamiento económico de un producto en el mercado hasta la obtenc ión de
la temperatura para un día o una hora precisa.
Estas últimas son el motivo de esta investigación el cual pretende ver la aplicación
de las redes neuronales en este campo de la predicción.
A lo largo de este documento se observaran algunas de las técnicas mas utilizadas
para la predicción de datos tales como las series de tiempo y los métodos que
permiten hacer predicción con ellas, las redes neuronales su historia, estructura,
métodos, arquitecturas y en especial Backpropagation feedforward, una breve
introducción a la utilización del toolbox de matlab para el manejo de redes
neuronales backpropagation y una serie de pruebas que pretende demostrar la
utilidad de las redes neuronales backpropagation tipo feedforward y el potencial de
la herramienta toolbox de matlab para el desarrollo de estas.
MARCO DE REFERENCIA
Una breve introspección al contenido temático de este documento será presentada
a continuación, estos temas serán abordados y complementados dentro del
desarrollo de este.
Series de Tiempo
Gran cantidad de información económica (de los individuos, las empresas, las
economías de los países, etc.) es recopilada con fines de análisis. ¿Qué son las
series de tiempo?: Registro metódico a intervalos de tiempo fijos de las
características de una variable, o su observación numérica.
Herramientas estadísticas: Se usan para describir y analizar series de tiempo.
•
Describir: Resumir en forma concisa,
información.
mediante gráficas y parámetros, la
•
Analizar: inferir de la información
características de (“toda”) la población.
(utilizándola
como
una
muestra),
Para inferir, muchas veces es útil “descomponer” la serie de tiempo por sus
principales componentes:
•
Tendencia y ciclo: representa el movimiento de largo plazo de la serie.
•
Estacionalidad: representa efectos de fenómenos que ocurren o se reproducen
periódicamente (fin de semana, diciembres, los viernes, etc.).
•
Irregularidad: movimientos impredecibles o aleatorios.
Tendencia y ciclo y estacionalidad, conforman la parte determinística de la serie,
mientras que la irregularidad representa la parte no-determinística o estocástica de
la serie.
Muchos usuarios de la información se limitan a desestacionalizar las series
estocásticas (en parte por la generalización de métodos de desestacionalización),
sin intentar un análisis estadístico mas completo.
-Ventajas de aplicar procesos estocásticos a series de tiempo:
•
•
Flexibilidad para representar un amplio número de fenómenos mediante una
sola clase general de modelos.
Facilidad y precisión en pronósticos.
•
Generalizar métodos de análisis de variables individuales a grupos de variables.
Neurona Natural
La neurona es la célula fundamental y básica del sistema nervioso.
Es una célula alargada, especializada en conducir impulsos nerviosos.
En las neuronas se pueden distinguir tres partes fundamentales, que son:
•
•
•
Soma o cuerpo celular: corresponde a la parte más voluminosa de la
neurona. Aquí se puede observar una estructura esférica llamada núcleo.
Éste contiene la información que dirige la actividad de la neurona. Además,
el soma se encuentra el citoplasma. En él se ubican otras estructuras que
son importantes para el funcionamiento de la neurona.
Dendritas: son prolongaciones cortas que se originan del soma neural. Su
función es recibir impulsos de otras neuronas y enviarlas hasta el soma de la
neurona.
Axón: es una prolongación única y larga. En algunas ocasiones, puede medir
hasta un metro de longitud. Su función es sacar el impulso desde el soma
neuronal y conducirlo hasta otro lugar del sistema.
Las neuronas son muy variadas en morfología y tamaño. Pueden ser estrelladas,
fusiformes, piriformes. Pueden medir no más de cuatro micras o alcanzar las 130
micras. También son muy variadas en cuanto a las prolongaciones: las dendritas y
el cilindroeje o axon. Las dendritas, de conducción centrípeta, pueden ser únicas o
múltiples. El axón es siempre único y de conducción centrífuga.
Conociendo la neurona, se explica la estructura básica que permite la actividad
refleja: el arco reflejo.
Todo arco reflejo está formado por varias estructuras. Éstas son: receptor, vía
aferente o vía sensitiva, centro elaborador, vía eferente o vía motora, y efector.
Receptor: es la estructura encargada de captar el estímulo del medio ambiente y
transformarlo en impulso nervioso. En los receptores existen neuronas que están
especializadas según los distintos estímulos.
Se encuentran por ejemplo receptores especializados en:
Ojo
----------------->
Visión
Oído
----------------->
Audición
Nariz
----------------->
Olfato
Lengua
----------------->
Gusto
Piel
----------------->
Tacto, dolor, presión, etc.
El receptor entrega el impulso nervioso a la vía aferente.
•
Vía aferente o vía sensitiva: esta vía tiene como función conducir los
impulsos nerviosos desde el receptor hasta el centro elaborador.
•
•
•
Centro elaborador: es la estructura encargada de elaborar una respuesta
adecuada al impulso nervioso que llegó a través de la vía aferente. La
médula espinal y el cerebro son ejemplos de algunos centros elaboradores.
Vía eferente o motora: esta vía tiene como función conducir el impulso
nervioso que implica una respuesta -acción- hasta el efector.
Efector: estructura encargada de ejecutar la acción frente al estímulo. Los
efectores son generalmente músculos y glándulas. Los músculos efectúan
un movimiento, y las glándulas producen una secreción -sustancias
especiales-. Los efectores están capacitados para hacer efectiva la orden
que proviene del centro elaborador.
Redes Neuronales en la Predicción
La predicción de errores en una red de computadoras, basada en el tráfico que
produce, es una tarea muy difícil. Un buen analista debe contar con muchos
elementos que le permitan conocer la red, además del conocimiento de tráfico
producido por redes semejantes a ésta. Es muy importante que el análisis sea
realizado por un experto en el área.
Las redes neuronales artificiales cuentan con el potencial para realizar este tipo de
análisis, ya que en la mayoría de los casos son muy buenas en el reconocimiento de
patrones complejos, que es básicamente el caso que ocurre con el tráfico producido
por una red de computadoras.
Tipos de Redes Neuronales Artificiales usados para la predicción
El tráfico producido en una red de computadoras no es mas que una serie de
tiempo, es decir un conjunto de valores de un mismo atributo censados en períodos
regulares. Para predecir series de tiempo se han utilizado las redes neuronales
alimentadas hacia adelante (feed-forward) y las redes recurrentes (recurrent).
Dentro de las redes alimentadas hacia adelante existen diferentes algoritmos, como
son: Linear Associator, Backpropagation, Cascade Correlation, Cascade 2, RAN
(resource Allocating Network). En la redes recurrentes tenemos entre otros:
Recurrent Cascade Correlation, Simple Recurrent Networks, Real-Time Recurrent
Learning, Sequential Cascaded Network.
Algunos trabajos de predicción con redes neuronales
En los últimos años se cuenta con muchos trabajos en la predicción de series de
tiempo utilizando redes neuronales artificiales, de los cuales podemos mencionar
los siguientes:
• Predicción de acciones. Consiste en el desarrollo de una red neuronal capaz de
realizar la predicción del precio de las acciones para un número dado de
compañías. Esta predicción se realiza mediante redes alimentadas hacia adelante,
y el objetivo en este particular caso es predecir el siguiente valor en la serie de
tiempo: el próximo precio de la acción.
• Predicción de tráfico vehicular. Se han utilizado redes neuronales recurrentes
para la predicción a corto plazo del tráfico en una carretera, a fin de prevenir
congestiones y tener un control del acceso a la autopista. Para esto se utilizan
datos estimados de otros días con propiedades similares; los mejores resultados e
obtuvieron con una red multi-recurrente, y se pudo comprobar que las redes
neuronales resolvieron este tipo de predicción y obtuvieron mejores resultados que
los métodos estadísticos convencionales (Ulbricht ).
• Predicción del tráfico en una autopista. Dierdre predice el volumen y el nivel de
ocupación de una autopista, los resultados obtenidos fueron mejores que los
obtenidos por técnicas usadas anteriormente. Se demostró que las redes
neuronales con exactitud pueden predecir el volumen y la ocupación 1 minuto por
adelantado, se utiliza una red neuronal multicapa entrenándose mediante
retropropagación, este trabajo se auxilia de una rampa de medición de lógica
• Predicción de la transición mensual del índice de precios de acciones. Usando
recurrencia y retropropagación, la red neuronal es entrenada para aprender
conocimiento experimental y para predecir la transición de precios de acciones,
tomando como entrada principal algunos indicadores económicos y obteniendo la
transición relativa de la composición del índice de precios de acciones, usando
ocho años de datos económicos, la predicción del crecimiento mensual o la caída
del índice del precio de acciones. Los resultados indican que las redes neuronales
son herramientas eficientes para la predicción del precio de las acciones.
1. SERIES DE TIEMPO
1.1.
INTRODUCCIÓN
Toda institución, ya sea la familia, la empresa o el gobierno, tiene que hacer planes
para el futuro si ha de sobrevivir y progresar. Hoy en día diversas instituciones
requieren conocer el comportamiento futuro de ciertos fenómenos con el fin de
planificar, prever o prevenir.
La planificación racional exige prever los sucesos del futuro que probablemente
vayan a ocurrir. La previsión, a su vez, se suele basar en lo que ha ocurrido en el
pasado. Se tiene pues un nuevo tipo de inferencia estadística que se hace acerca
del futuro de alguna variable o compuesto de variables basándose en sucesos
pasados. La técnica más importante para hacer inferencias sobre el futuro con base
en lo ocurrido en el pasado, es el análisis de Series de Tiempo.
Son innumerables las aplicaciones que se pueden citar, en distintas áreas del
conocimiento, tales como, en economía, física, geofísica, química, electricidad, en
demografía, en marketing, en telecomunicaciones, en transporte, etc.
Series de Tiempo
1. Series económicas:
2. Series Físicas:
3. Geofísica:
Ejemplos
- Precios de un artículo
- Tasas de desempleo
- Tasa de inflación
- Índice de precios, etc.
- Meteorología
- Cantidad de agua caída
- Temperatura máxima diaria
- Velocidad del viento (energía eólica)
- Energía solar, etc.
- Series sismologías
4. Series demográficas:
- Tasas de crecimiento de la población
- Tasa de natalidad, mortalidad
- Resultados de censos poblacionales
5. Series de marketing:
- Series de demanda, gastos, ofertas
6. Series de
telecomunicación:
- Análisis de señales
7. Series de transporte:
- Series de tráfico
Uno de los problemas que intenta resolver las Series de Tiempo es el de predicción.
Esto es dado una serie {x(t1),...,x(tn)} nuestros objetivos de interés son describir el
comportamiento de la serie, investigar el mecanismo generador de la serie temporal,
buscar posibles patrones temporales que permitan sobrepasar la incertidumbre del
futuro.
En adelante se estudiará como construir un modelo para explicar la estructura y
prever la evolución de una variable que observamos a lo largo del tiempo. La
variables de interés puede ser macroeconómica (índice de precios al consumo,
demanda de electricidad, series de exportaciones o importaciones, etc.),
microeconómica (ventas de una empresa, existencias en un almacén, gastos en
publicidad de un sector), física (velocidad del viento en una central eólica,
temperatura en un proceso, caudal de un río, concentración en la atmósfera de un
agente contaminante), o social (número de nacimientos, matrimonios, defunciones,
o votos a un partido político). [1]
1.2. DEFINICIÓN
En muchas áreas del conocimiento las observaciones de interés son obtenidas en
instantes sucesivos del tiempo, por ejemplo, a cada hora, durante 24 horas,
mensuales, trimestrales, semestrales o bien registradas por algún equipo en forma
continua.
Se llama Serie de Tiempo a un conjunto de mediciones de cierto fenómeno o
experimento registradas secuencialmente en el tiempo. Estas observaciones serán
denotadas por {x(t1), x(t 2), ..., x(tn)} = {x(t) : t ∈ T ⊆ R} con x(ti) el valor de la variable
x en el instante ti. Si T = Z se dice que la serie de tiempo es discreta y si T = R se
dice que la serie de tiempo es continua. Cuando ti+1 - ti = k para todo i = 1,...,n-1, se
dice que la serie es equiespaciada, en caso contrario será no equiespaciada.
En adelante se trabajará con Series de Tiempo discretas, equiespaciadas en cuyo
caso se asumirá sin perdida de generalidad que: {x(t1), x(t2), ..., x(tn)}= {x(1), x(2),
..., x(n)}. [2]
1.3. OBJETIVO DEL ANÁLISIS DE UNA SERIE DE TIEMPO
Los principales conceptos y características que se tienen en cuenta para el análisis
de una serie de tiempo son:
1. Obtener modelos estadísticos que describen la estructura pasada de las
observaciones que generan la serie; y/o estudiar modelos que explican la
variación de una serie en términos de series (explicativas) conocidas.
2. Suponer que la estructura pasada de la serie de interés o de las series
explicativas se conserva y bajo este supuesto, pronosticar valores futuros de
la serie bajo estudio.
3. Analizar la significancia de los efectos que políticas o intervenciones
pasadas causaron en la estructura de la serie.
4. Simular valores futuros de la serie,
bajo condiciones o restricciones
definidas por políticas o criterios nuevos, para así supervisar y controlar los
cambios que se producen en la serie. [4]
Para una mayor comprensión de la estructura, el comportamiento y el análisis de
una serie de tiempo se debe tener en cuenta como primera medida conocer y
entender algunos términos que se describirán a continuación.
1.4. TERMINOS RELACIONADOS AL ANÁLISIS DE UNA SERIE DE TIEMPO
1.4.1. VARIABLE ALEATORIA
En estadística y teoría de probabilidad una variable aleatoria se define como el
resultado numérico de un experimento aleatorio. Matemáticamente, es una
aplicación
que da un valor numérico a cada suceso en el espacio O de los
resultados posibles del experimento.
Se distinguen entre
•
variables aleatorias discretas
•
variables aleatorias continuas.
Dado una variable aleatoria X se pueden calcular estimadores estadísticos diferentes
como la media (Media aritmética, Media geométrica, Media ponderada) y valor
esperado y varianza de la distribución de probabilidad de X.
Para las variables aleatorias continuas
•
El valor esperado E[X] se calcula así
E[X] = integral {xf(x)dx}
•
La varianza V x (X) es
V x [X] = E[X2] - (E[X])2
Donde
E(X2) = integral {x2f(x)dx}
[6] [7]
1.4.2. PROCESOS ESTOCÁSTICOS
{
}
Un proceso estocástico es una sucesión de variables aleatorias Zt / t ∈ T ⊆ Ζ .
El subíndice que indica como varia t es el índice (puede variar en un subconjunto de
los reales, generando así procesos continuos. Aquí solo se consideran procesos
estocásticos discretos, cuando el índice varía en los enteros.
La relación de un proceso estocástico con una serie de tiempo radica en que una
Serie de Tiempo es una sucesión zt ,
generada
al obtener una y solo una
observación de cada una de las variables aleatorias que definen un proceso
estocástico. Las observaciones son tomadas a intervalos de tiempo o distancia
iguales, según lo indica el índice t que genera la sucesión. En este sentido, la
serie es una realización de un proceso estocástico.
Luego entonces un
pronostico es la predicción de un valor o una variable
aleatoria, Z n + l , en un proceso estocástico. n es el origen del pronostico y l la
posición relativa de la variable a pronosticar con respecto a n.
Cuando se habla de la actualización de un pronóstico se refiere a re-estimar los
parámetros del modelo de predicción, incluyendo las nuevas observaciones, y con
ellas pronosticar los valores futuros estipulados en el horizonte del pronóstico. [3]
1.4.3. OPERADORES
1.4.3.1. OPERADOR DE REZAGO
En el análisis de series de tiempo es una herramienta útil el operador de rezago,
denotado L . Que sirve para expresar ecuaciones en diferencia, que es la forma
típica de las series de tiempo y para encontrar su solución particular (estado
estable). Se define como:
Lτ x1 = xt −τ
Donde τ es el rezago (positivo o negativo) que se desea introducir en la variable
x t por ejemplo:
L3 x t = xt −3
L−2 x t = xt + 2
Lc = c
Donde c es una constante. La propiedad más útil del operador de rezago es:
[
]
1
2
3
= 1 + αL + (αL) + (αL) + .......
1αL
para α < 1
[3]
1.4.3.1. OPERADOR DE DIFERENCIA
Otro operador conveniente y además muy útil para expresar series de tiempo es el
operador de diferencia ∆ xt definido como:
∆ xt = xt − x t −1 = (1 − L ) x t
El cual consiste en tomar una observación y restarle la observación inmediatamente
anterior. También puede aplicarse de manera repetitiva. Por ejemplo
∆2 x t = ∆∆xt = ∆( xt − xt −1 ) = x t − xt −1 − ( xt −1 − x t− 2 )
= x t − x t−1 − x t−1 + x t− 2 = x t − 2 x t−1 + x t− 2 [3]
1.4.4. MEDIA
La media aritmética o promedio de una cantidad finita de números es igual a la
suma de todos ellos dividida entre el número de sumandos.
Así, dados los números a1,a2, ... , an, la media aritmética será igual a:
Por ejemplo, la media aritmética de 8, 5 y -1 es igual a (8 + 5 + (-1)) / 3 = 4.
El símbolo µ (mu) es usado para la media aritmética de una población. Se usa X,
con una barra horizontal sobre el símbolo para medias de una muestra:
.
[6]
1.4.5. VARIANZA
En teoría de probabilidad y estadística la varianza es un estimador de la divergencia
de una variable aleatoria X de su valor esperado1 E[X]. También se utilizan la
desviación estándar, la raíz de la varianza.
La varianza V[X] de una variable aleatoria X para el caso discreto se define como
1
El valor esperado o esperanza matemática de una variable aleatoria es la suma de la probabilidad de
cada suceso multiplicado por su valor.
También se expresa como la diferencia entre el momento de orden 2 y el cuadrado
del valor esperado:
[ ]
V ( x) = E x 2 − E [x ] [6]
1.4.6. COVARIANZA
En teoría de probabilidad y estadística la covarianza es un estimador de la
dependencia lineal de dos variables aleatorias.
La covarianza C(X,Y) de dos variable aleatorias X y Y se define como
Para dos variables aleatorias independientes 2 la covarianza es cero. La covarianza
de una variable aleatoria consigo misma es su varianza. [6]
1.4.7. FUNCIÓN DE CORRELACIÓN
La c orrelación entre dos variables aleatorias Y y Z mide el grado al cual tienden a
moverse conjuntamente, es una medición sobre el co-movimiento que manifiestan.
 y − µ y
Yk = E 
 σ y
2
  Z − µz 
, 

  σ 

z


[9]
Dos variables aleatorias son independientes si su probabilidad conjunta es igual al producto de las
marginales
1.4.8. FUNCIONES DE AUTOCOVARIANZA
Sea {Zt / t ∈ Ι ⊂ Ζ}proceso estacionario en covarianza. Como la covarianza entre
dos variables de un proceso estacionario(explicado con detalle más adelante en la
sección de estacionariedad)
solo depende de la distancia que los separa, la
siguiente expresión define la función de autocovarianza.
Y k = C xy (Zt , Zt + k ,) = E [( Zt + k − µ )], k = 0,1, 2,L .
Si C xy (Zt , Zt
+k
) representa
la covarianza entre la variable Zt y la variable futura
Zt + k ⋅ . En cambio, C xy (Z t + k , Z t )representa la covarianza entre la variable Zt + k y la
variable pasada Zt . Estas dos covarianzas son iguales por propiedades de la
covarianza y porque la distancia entre las variables que las definen es k. Luego si
se considera en t un sentido de desplazamiento, la definición puede generalizarse
para k en los enteros, así, cuando k es positivo, Yk mide la covarianza de Zt con
una variable futura, y cuando k es negativo mide la covarianza con respecto a una
variable pasada. Esta generalización queda consignada en la siguiente expresión.
Yk : k → Υk = cov[Zt, Zt + k ] = E [(Zt − µ )(Zt + k − µ )] Z: los enteros R: los reales [10]
Ζ→ℜ
1.4.9. FUNCIÓN DE AUTOCORRELACIÓN
La correlación es la covarianza con los datos centrados y ajustados por la
dispersión. Por lo que ambos conceptos miden el grado de enlace lineal entre Y y Z.
Interesa aplicar esta medida para una variable con su pasado, se estudia el
comportamiento de las observaciones con su historia, esto mide la tendencia de la
serie a comportarse como antes lo hizo, para llevarlo a cabo se toma el par Z t , Z t −k
y se fija en su enlace lineal a k periodos de distancia. Como el valor de k es variable
llegamos a una correspondencia; a cada k le asocia el enlace que presenta el par
( Z t , Z t −k ).
La función de autocorrelación es definida como:
n− k
Yˆk
Pk = =
Yˆo
∑ (Z − Z )(Z
t
t+ k
t =1
− Z)
∑ (Z − Z )
n
, k = 0,1,2, K
2
t
t =1
Para procesos estacionarios de segundo orden la media es constante y por lo tanto
E[ Z t ] = E[ Z t +k ] = Y y
la
varianza
también
es
constante,
esto
es:
σ 2 = V x ( Z t ) = V x ( Z t +k ) para todo valor de k.
El símbolo Y(k) denota a la función de autocorrelación, ya que su labor es medir la
correlación de la serie consigo misma a distancia k, esta función no depende del
punto en el tiempo de referencia solo depende de la distancia que separa a las
observaciones, (no afecta t pero si influye k) ya que si se cambia de t a s queda que:
 z − µ   z s− k − µ 
ρ (k ) = Γ ( Z t , Z t + k ) = E  s
, 


 σ   σ
La autocorrelación tiene tres propiedades importantes:
A) ρ (k ) = 1
La autocorrelación de una variable a tiempo presente es igual a uno ya que el grado
de asociación es perfecto.
B) − 1 ≤ ρ (k ) ≤ 1
Indica el grado de tendencia a comportarse similarmente ( Z t , Z t + k ) en el caso de
que sea una autocorrelación positiva, 0 ≤ ρ (k ) ≤ 1 , O a moverse en la dirección
opuesta, bajo autocorrelación negativa − 1 ≤ ρ (k ) ≤ 0 .
C) ρ (k ) = ρ (− k )
Indica que con tabular los valores positivos de k se obtiene toda la información que
es requerida.
Esta última relación se obtiene de observar las igualdades:
ρ (k ) = Γ ( Z t , Z t + k ) = Γ ( Z t − k , Z t ) = ρ (− k )
Su gráfica se obtiene poniendo en el eje horizontal los valores de k, mientras que en
el eje vertical la autocorrelación. [4]
1.4.10. FUNCIÓN DE AUTOCORRELACIÓN PARCIAL
Se puede decir que el último parámetro de la autoregresión (la variable contra su
pasado) nos da el valor de la autocorrelación parcial de orden k.
La autocorrelación parcial de orden k denotada por φ k , mide la correlación que
existe entre Z t y Z t + k después de que ha sido removida la dependencia lineal de las
componentes
intermedias,
Z t +1 , Z t + 2 , Z t +3 ,....., Z t + k − 2 , Z t +k −1
o
sea,
mide
la
contribución que se logra al agregar Z t para explicar Z t + k .
Se define como la correlación condicional:
Pk = Γ[ Zt , Z t+ k | Z t +1, Z t + 2 , Z t +3 ,...., Z t+ k −2 , Z t +k −1 ]
Donde Z t es una serie de media cero E[ Z t ] = 0. Un resultado interesante de la
teoría es hacer ver que es posible obtener la autocorrelación parcial por medio de
una regresión como sigue:
Z t + k = φ k1 Z t + k −1 + φ k 2 Z t +k −2 + φk 3 Z t +k −3 + ..... + φ kk −1 Z t −1 + φkk Z t + ε t + k
Ya que Pk = φ kk es la autocorrelación parcial.
El término Pk se obtienen de la última coordenada de la regresión con k términos sin
constante, (los datos ya han sido centrados). Esta será la ruta a seguir en adelante
para estimar la autocorrelación parcial siempre se tomara el último coeficiente en
una autoregresión. [4]
1.4.11. ESTACIONARIEDAD
Un proceso estocástico (Zt / t ∈ Ι ⊂ Ζ ) es estacionario en covarianza o débilmente
estacionario de orden 2 si:
i. Para
todo
t ∈ Ι , la media y varianza existen y son constantes


 E [Z t ] = µ y ,Var [Zt ] = σz 2  ;


ii. Si para cualquier i, j ∈ Ι, Cov(Z 1, Zj ) depende únicamente del número de
períodos que separa las variables, es decir, de j − i , que se denotará k:
número de rezagos.
Sea {Z 1, Z 2, Z 3, L Zn}una serie de tiempo estacionaria. Las siguientes expresiones
definen
estimadores
de
la
función
de
autocovarianza
y
autocorrelación
respectivamente:
1 n− k
Yˆk = ∑ (Zt − Z )(Z t + k − Z ), k = 0,1,2, K
n t =1
n− k
Yˆk
Pˆ k =
=
Yˆo
∑ (Z − Z )(Z
t
t+ k
t =1
∑ (Z − Z )
n
t
− Z)
, k = 0,1,2, K
[3]
2
t =1
Un proceso es estacionario de forma estricta cuando los distintos valores
estadísticos no dependen del instante en que se calculan:
E = [ x(t1 )] = E [ x( t2 )]
f Z t ( Z t ) = f Zt + k ( Z t + k )
1.4.12. ERGODICIDAD
Sea Zt un proceso estocástico estacionario en covarianza.
i. Se dice que el proceso Zt es ergódico con respecto a la media si satisface la
siguiente condición:
lim 1 n −k
∑ Zt = µ
n → ∞ n t =1
ii. Se dice que el proceso Zt es ergódico con respecto a la autocovarianza si
satisface que:
lim ˆ
lim 1 n − k
Yk =
∑ (Zt − Z )(Zt + k − Z ) = Yk
n→∞
n → ∞ n t =1
k=0,1,2,…
Note que si el proceso es ergódico con respecto a la autocovarianza, lo es con
respecto a la varianza y a la autocorrelación pues Y 0 y P k están definidos.
El proceso es ergódico si estos valores coinciden con los de cualquier registro:
E = [ x(ti )] = m( x j ) [3]
1.4.13. CORRELOGRAMA
Como la varianza de la media muestral tiende a cero, para muestras grandes puede
ser ignorado este termino, con lo cual se ve que el primer estimador tiene un mayor
sesgo que el segundo, note que si desea mantener acotado este sesgo se debe
tomar k< T/4
En resumen para la práctica se utiliza la función de autocorrelación muestral a partir
de una muestra de tamaño T, con esta se calculan las covarianzas muéstrales.
La suma va desde 1 hasta T-k, Y se pasa a la función de autocorrelación muestral:
Se debe recordar que se buscan "picos" en la función de autocorrelación muestral,
ya que estos exhiben una alta correlación entre observaciones k periodos aparte; se
define como pico un valor de la autocorrelación que esta afuera de esta banda.
La gráfica de la función de autocorrelación muestral se le llama el correlograma, en
esta a cada valor de k le asocia la correlación revelada en la muestra entre la
variable y su pasado a distancia k. En otras palabras los picos revelan un comovimiento significativo.
Interesa mirar los picos, donde la autocorrelación muestral se sale de la banda,
cuando uno mira el correlograma.
En el dibujo se tienen picos o sea valores elevados para k = 1, 2, 3 y 5, 6 esto
significa
que
las
correlaciones
( Z t yZt −1 ), ( Z t yZt −2 ), ( Z t yZ t − 3 ), ( Z t yZ t −4 ), ( Z t yZ t −5 ), ( Z t yZ t − 6 )
entre
muestran
significativas, mientras que el valor de k = 4, 7, 8, 9,… tienen una correlación baja.
Para localizar los picos en la función de autocorrelación uno puede tomar las
primeras 20 autocorrelaciones.
Note que la función de autocorrelación muestral es también una función simétrica
alrededor del origen:
Ya que la autocovarianza muestral es simétrica:
Tiene una consecuencia práctica importante en lugar de perder las ultimas k
observaciones, tomar los datos desde t = 1, hasta T - k. Es mejor se gastan las
primeras k observaciones en los retrasos y se toman los datos desde t = k + 1, hasta
T. [8]
1.4.14. RUIDO BLANCO
Un proceso estocástico
{Zt / t = 1,2, K},
es un Ruido Blanco si la sucesión de
variables aleatorias que lo forman provienen de una misma distribución,
generalmente normal, y cumple:
i.
E [Zt ] = 0
ii.
Var[Zt ] = σ 2
iii.
Yk = [Zt , Z t + k ] = E [Z tZ t + k ] = 0 para todo k ≠ 0
Conclusión: Los errores de un modelo de regresión deben ser ruido blanco. En
series de tiempo los errores se llaman ruido blanco.
Sea Zt un proceso de ruido blanco. Luego reemplazando teniendo en cuenta la
definición de ruido blanco se obtiene: [4]
Yk = E [(Zt − µ )] = E [Zt Zt + k ] luego;
k = 0 Yo = E [Zt Zt ] = Var[Zt ] = σ 2
definición, ii
k ≠ 0 Yk = E [ZtZt + k ] = 0
definición, iii
Función de autocovarianza teórica
Gráfica G1- 1a
Ruido Blanco
= 0
kεΖ
≠ 0
0,75
Ruido Blanco
FAO
σ 2 si k

Yk = 
 0 si k

Función de autocovarianzas teórica
1
0,5
0,25
0
0
2
4
6
8
10
12
k (rezago)
FAC teórica
Gráfica G1-1b
Ruido blanco
k
= 0
kε Ζ
k ≠ 0
3
FOV
1 si

Pk = 
0 si

Función de autocovarianzas teórica
4
Ruido Blanco de
varianza 4
2
1
0
0
2
4
6
k (rezago)
8
10
12
1.5. COMPONENTES DE UNA SERIE DE TIEMPO
Una Serie de Tiempo puede tener las siguientes componentes:
1. Tendencia: Esta componente representa la trayectoria suavizada que define la
serie en el rango de variación del índice y se halla observando la forma funcional
de la grafica de la serie ( zt vs t ) a lo largo del tiempo. La tendencia puede ser:
constante, línea, cuadrática, exponencial, etc.…
2. Componente Estacional: Esta componente se presenta cuando la serie tiene
patrones estaciónales que se repiten con una frecuencia constante, produciendo
en su grafica un efecto periódico.
Los patrones estaciónales se presentan por fenómenos climáticos, recurrencia
en los pagos, costumbres y/o agrupamiento, afectan las observaciones que
generan la serie.
3. Componente Aleatoria: Esta componente se representa los cambios que sufre la
serie ocasionados por fenómenos externos no controlables.
4. Componente Cíclica: Esta componente se presenta en series que son afectadas
por fenómenos físicos o económicos que ocurren con una periodicidad variable.
[1]
1.6. ANÁLISIS DESCRIPTIVO DE UNA SERIE DE TIEMPO
El análisis descriptivo de una serie comprende: la estimación de los estadísticos
básicos de la serie y el análisis en el grafico de zt Vs t (o el índice) de los
siguientes aspectos:
a) Detectar Outlier: se refiere a puntos de la serie que se escapan de lo normal.
Un outliers es una observación de la serie que corresponde a un comportamiento
anormal del fenómeno (sin incidencias futuras) o a un error de medición.
Se debe determinar desde fuera si un punto dado es outlier o no. Si se concluye
que lo es, se debe omitir o reemplazar por otro valor antes de analizar la serie.
Por ejemplo, en un estudio de la producción diaria en una fabrica se presentó la
siguiente situación:
Figura 1.1
Los dos puntos enmarcados en un círculo parecen corresponder a un
comportamiento anormal de la serie. Al investigar estos dos puntos se vio que
correspondían a dos días de paro, lo que naturalmente afectó la producción en esos
días. El problema fue solucionado eliminando las observaciones e interpolando.
b) Permite detectar tendencia: la tendencia representa el comportamiento
predominante de la serie. Esta puede ser definida vagamente como el cambio de la
media a lo largo de un periodo.
Figura 1.2
c) Variación estacional: la variación estacional representa un movimiento periódico
de la serie de tiempo. La duración de la unidad del periodo es generalmente menor
que un año. Puede ser un trimestre, un mes o un día, etc.
Matemáticamente, podemos decir que la serie representa variación estacional si
existe un número s tal que x(t) = x(t + k ⋅s).
Las principales fuerzas que causan una variación estacional son las condiciones del
tiempo, como por ejemplo:
1) en invierno las ventas de helado
2) en verano la venta de lana
3) exportación de fruta en marzo.
Todos estos fenómenos presentan un comportamiento estacional (anual, semanal,
etc.)
Figura 1.3
d) Variaciones irregulares (componente aleatoria): los movimientos irregulares
(al azar) representan todos los tipos de movimientos de una serie de tiempo que no
sea tendencia, variaciones estacionales y fluctuaciones cíclicas. [1]
1.7. MÉTODOS DE PRONÓSTICO
En un pronóstico siempre está latente la incertidumbre causada por el futuro, que
se refleja en un incremento en el error de predicción. Por este motivo, otro de los
objetivos del estudio de las Series de Tiempo es buscar métodos que reduzcan al
máximo el error de predicción.
Se concluye, entonces que un sistema de pronósticos además de predecir un valor
futuro de una variable aleatoria debe estimar su error e idealmente su distribución,
lo cual permitirá cuantificar el riesgo en la toma de las decisiones.
1.7.1. CONSIDERACIONES PRELIMINARES
La siguiente información debe estar claramente definida antes de empezar a
estudiar las diferentes alternativas que brindan los métodos utilizados para
pronosticar una Serie de Tiempo.
1.
Las variables aleatorias a pronosticar, completamente definidas. En este
punto es bueno notar que hay casos en los cuales es más útil pronosticar
los cambios que sufre una variable en su diferencia, que su valor, como
ocurre en procesos de control, donde se predice cuando el sistemas esta
funcionando mal.
2.
Los siguientes tiempos deben especificarse y confrontarse con la
información disponible.
a) Periodo de la serie (o de pronóstico). Es la unidad de tiempo (de
espacio, o del índice)
que indica la frecuencia de lectura de las
observaciones que generan la serie.
Por ejemplo si se desea
pronosticar la demanda semanal de un artículo, el periodo de la serie
es una semana y para estimar las ventas futuras se requiere conocer
las ventas semanales del artículo en algunas semanas anteriores.
b) Horizonte del pronostico (H). Es el número de periodos que debe
cubrir el sistema de pronósticos cada vez que se utiliza, e indica
cuanto se penetra en el futuro; su valor depende de la naturaleza de
lo que se planea.
c) Intervalo de pronostico (IP). Es la frecuencia con la cual se calculan
o actualizan los pronósticos existentes.
3.
Datos históricos además de las observaciones pasadas del proceso o de la
variable de interés, deben precisarse, cuando es posible, los puntos y/o
los intervalos de tiempo o del índice en los cuales la evolución de la variable
fue afectada por factores externos o internos, que se cree modificaron
algunas observaciones o la estructura de correlación de la serie,
para
cuantificar sus efectos o simplemente para eliminar perturbaciones en los
pronósticos.
4.
La precisión requerida de los pronósticos.
5.
Recursos disponibles para implementar el sistema de pronósticos.
Los métodos de pronóstico pueden clasificarse en dos grande bloques:
•
Métodos cualitativos o subjetivos
•
Métodos cuantitativos
1.7.2. MÉTODOS CUALITATIVOS O SUBJETIVOS
Los métodos cualitativos
son procedimientos que estiman los pronósticos
basándose en juicios de expertos, se utilizan la experiencia, intuición, habilidad y
sentido común de personas entrenadas para enfrentar este tipo de problemas. Por
ende, las técnicas estadísticas no juegan papel importante en su implementación.
Los Exploratorios se caracterizan porque partiendo del pasado y del presente se
desplazan hacia el futuro heurísticamente, buscando y analizando las alternativas
factibles.
Los Normativos, en cambio, parten del futuro estableciéndolos objetivos que se
pretenden alcanzar y luego se devuelven hacia el presente para determinar si con
los recursos y tecnología existente pueden alcanzarse los fines inicialmente
planteados.
Estos métodos se utilizan para pronosticar productos nuevos del mercado o
procesos de los cuales se tiene poca información pasad,
por que su
implementación no requiere conocer datos pasados de la serie.
1.7.3. MÉTODOS CUANTITATIVOS
Los métodos cuantitativos son basados en modelos estadísticos o matemáticos y se
caracterizan por que una vez elegido un modelo o una técnica de pronóstico, es
posible obtener nuevos pronósticos automáticamente. Se clasifican en modelos uní
variados y causales.
Los modelos uní variados se basan únicamente en las observaciones pasadas de la
serie para predecir valores futuros.
Los métodos de descomposición,
los de
suavizamiento y los modelos (ARIMA) en el dominio del tiempo o el dominio de la
frecuencia, son considerados métodos uní variados.
Los modelos causales estiman las predicciones futuras de un proceso determinando
la relación existente entre la variable que define la serie y otras variables (otras
series explicativas) que explican su variación. En algunos de estos modelos, para
pronosticar valores futuros de la serie es necesario pronosticar
primero las
variables o series explicativa.
Los modelos de regresión,
de funciones de
transferencia (regresión dinámica) y otros modelos econométricos,
son
considerados modelos causales.
1.7.4. MÉTODOS DE DESCOMPOSICIÓN
Estos métodos para pronosticar valores futuros de una Serie de Tiempo, primero
estiman los componentes d la serie (los parámetros que definen la tendencia y cada
uno de los términos que caracterizan una estación completa) con las observaciones
conocidas, y luego extrapolan o proyectan estas componentes a tiempos futuros.
Además estiman la varianza de la componente aleatoria para calcular los intervalos
de predicción. Su implementación requiere de un buen número de observaciones.
Algunos de estos métodos evalúan la componente cíclica de la serie. Entre estos
métodos de descomposición se encuentran x-11 y el x-11 ARIMA, construidos y
utilizados por la oficina de censos de USA.
1.7.5. MÉTODOS DE SUAVIZAMIENTO
Estos métodos
estiman valores futuros de una serie basándose en la forma
funcional, que el modelador supone, describen las observaciones conocidas de la
serie, y la eliminación de la componente aleatoria mediante ponderaciones que
actuando sobre la las observaciones suavizan la trayectoria (forma funcional) de la
serie,
alterada por la acción de la componente aleatoria.
Las ponderaciones
pueden ser iguales para todas las observaciones o pueden depender de la distancia
de la observación al origen del pronóstico, según el método de suavizamiento
empleado.
En cada actualización de los pronósticos se estiman los paramentos requeridos por
la forma funcional (tendencia y estacionalidad) y con ellos se evalúa la función para
los valores futuros de t que indica el horizonte del pronóstico.
algunos autores los denominan métodos localmente constantes.
Entre los métodos de suavizamiento se encuentran:
Por esta razón
a. Promedios móviles o medias móviles simples: Utilizado con Series de
Tiempo cuya forma funcional es constante, la grafica de la serie oscila
alrededor de un valor medio.
b. Promedios móviles o medias móviles dobles: Empleado con Series de
Tiempo que se supone presentan una tendencia lineal.
c. Suavizamiento exponencial simple (SES): Para modelar series que
presentan tendencia constante y componente aleatoria.
d. Suavizamiento exponencial doble (SED): Para modelar series que
presentan tendencia lineal y componente aleatoria.
e. Suavizamiento exponencial triple (SET): Para modelar series que
presentan tendencia cuadrática y componente aleatoria.
f.
Winter aditivo y Winter multiplicativo: Para modelar series que presentan
tendencia, componente estacional aditiva o multiplicativa según el caso y
componente aleatoria.
g. Mínimos cuadrados descontados: para modelar series que presentan
tendencia, componente estacional aditiva o multiplicativa y componente
aleatoria. [1]
1.8. MODELOS AUTORREGRESIVOS
1.8.1. AR(1)
Veamos primero el más sencillo de los modelos autorregresivos, el AR(1), que tiene
un solo rezago y se escribe,
xt = axt − 1 + εt
O también, empleado el operador de rezago, como (1 − aL)xt = εt
Este modelo podría representar, por ejemplo, los desempleados en el mes como
una proporción fija a de aquellos desempleados en el mes t – i habiendo la otra
proporción 1 – a conseguido empleo, más un nuevo grupo ε que busca trabajo,
donde estas adiciones ε 1 > 0 son ruido blanco.
dx(t )
= (a − 1)x (t ) + ε (1)
dt
En sentido estricto, no puede existir un proceso puramente aleatorio en tiempo
continuo, ε (t ) , ya que los cambios abruptos en períodos infinitesimales de este
proceso requerirían cero inercia o energía infinita.
1.8.2. AR(P)
Este es quizás el modelo más popular para series de tiempo univariadas. Expresa
el valor actual de una serie estacionaria xt en función de su propio pasado, o sea
de sus rezagos x t − 1,K , xt
− p,
.
Un autorregresivo tiene la siguiente expresión
algebráica.
x1 + a1 xt
−1
+ a 2 xt
−2
+ K + ap xt − p = ε t + c
Donde, si se quiere, se puede despejar xt , y donde c es una constante, p es el
número de rezagos, y εt es ruido blanco con media cero y varianza constante σt 2 .
En la literatura de series de tiempo, la secuencia
{εt}se conoce indistintamente
como ruido, error, residuos, innovaciones o shocks.
La expresión del autorregresivo de orden p, omitiendo al constante sin pérdida de
generalidad, se puede escribir en términos del operador de rezago como
(1 + a1L + a 2L 2 + K + apLp )xt
= a( L)xt = εt
xt − µ = a1( xt − 1 − µ ) + a 2( xt − 2 − µ ) + K + ap (xt − p − µ ) + εt
xt = ( µ − a1µ − a 2µ − K − apµ ) + a1xt − 1 + a 2 xt − 2 + K + apxt − p + εt
xt = µ (1 − a1 − a2 K − ap) + a1xt − 1 + a 2 xt − 2 + K + apxt − p + εt
xt = c + a1xt − 1 + a2 xt − 2 + K + apxt − p + εt
Al estimar el modelo se puede incluir una constante si la serie no está en
desviaciones, o se puede restar la media a todas las observaciones y no incluir la
constante. Algunos programas reportan estimativos para la media µ y la constante
c por separado con base en la expresión anterior. [3] [4]
1.9. MODELOS DE PROMEDIO MÓVIL
1.9.1. MA(Q)
El segundo modelo dentro de la metodología Box-Jenkis es el de promedio móvil.
Este expresa la serie x, en función del presente y el pasado de una serie de ruido
blanco {εt } con media cero.
q
xt = c + β 0εt + β 1εt − 1 + β 2εt − 2 + K + βqεt − q = ∑ βsεt − s
0
Donde los coeficientes β no tienen restricciones en cuanto a la estabilidad de la
serie porque una suma finita de términos con varianza finita, como lo son los εt , no
puede ser explosiva. Se ve fácilmente que Εxt = 0 porque Ε εt = 0 .
Como se mencionó antes, en el contexto de series de tiempo, y especialmente en el
caso de los modelos de promedio móvil, la secuencia {εt} también se conoce como
innovaciones, en el sentido de ser información nueve que llega al sistema.
1.9.2. MA(1)
El modelo MA(q) más sencillo es el que tiene un solo rezago de εt . Este se denota
MA(l) y su expresión es
xt = β 0 εt + β 1εt − 1
Es evidente que Ε xt = 0 . La función de
para un MA(l) se encuentra
multiplicando la ecuación anterior por la misma ecuación rezagada, y tomando
expectativas.
De manera que r(l) máximo será
r (l ) max =
β1
±1
1
=
=±
1 + β 12 1 + 1
2
Positivo o negativo dependiendo del signo de β 1 . [3][4]
1.10. MODELO AUTORREGRESIVO CON PROMEDIO MÓVIL
Modelos ARIMA
Estos métodos modelan las Series de Tiempo estudiando la
estructura de la correlación que el tiempo, el índice, o la distancia induce en las
variables aleatorias que originan la serie.
El plan de trabajo de estos modelos es:
I. Por medio de transformaciones y/o diferencias se estabiliza la varianza, y se
eliminan la tendencia y la estacionalidad de la serie; obteniéndose así, una serie
estacionaria.
II. Para la serie estacionaria
obtenida se identifica y se estima un modelo que
explica la estructura de correlación de la serie con el tiempo.
III. Al modelo hallado en II.
Se aplican transformaciones inversas que permitan
reestablecer la variabilidad, la tendencia y la estacionalidad de la serie original.
Este modelo integrado se usa para pronosticar.
Para explicar la estructura de correlación entre las observaciones de una serie
estacionaria se consideran básicamente dos modelos:
∞
Zt = ∑ π j Zt − j + at Modelo auto-regresivo (AR).
j 01
∞
Zt = µ + ∑ψ j at − j Modelo de media móvil (MA).
j 01
Un hecho común a muchos fenómenos es que el comportamiento pasado provee
información sobre el comportamiento futuro; esto es especialmente cierto en series
de tiempo. El pasado de una serie suele incorporar, y de esa manera reemplazar, la
información de otras variables que pudieran intervenir en el proceso.
La
especificación relativamente sencilla, pero efectiva, que resulta de expresar una
variable de función de su propio pasado es conocida como autorregresiva o, en
general, como modelaje Box-Jenkins. Las dos especificaciones principales de esta
metodología son los modelos autorregresivos AR(p) y los modelos de promedio
móvil MA(q), que describiremos a continuación.
1.11. MODELO ARMA (P,Q)
La combinación de los dos modelos anteriores, el AR(p) y el MA(q), junto con el
hecho de que uno se puede convertir en el otro y viceversa, da origen al modelo
ARMA(p,q). Su ventaja es que, al combinar elementos de ambos, puede ofrecer
mayor parsimonia, esto es, usar menos términos. Su expresión será
xt = a1 xt
−1
+ a 2 xt
−2
+ K + a p xt
− p
+ β 0 εt + β 1εt
−1
+ β 2 εt
−2
+ K + β qεt
−q
o también
p
q
j =1
j =0
xt = ∑ ajxt − j + ∑ βjεt −
zt = a 2 z t − 2 + kt
j
[3]
1.11. CRITERIOS DE EVALUACIÓN DE PREDICCIONES
Las medidas de precisión del pronóstico se usan para determinar que tan eficaz es
un pronóstico a través del cálculo de su precisión con respecto a los valores reales,
es decir, buscan obtener una medida de que tan lejos se encuentran los valores
pronosticados de los obtenidos en la realidad. En las siguientes medidas del error,
Xt es el valor de la serie de tiempo en el momento t y Pt es el pronóstico para ese
mismo momento. [11]
Estos son algunos de los indicadores comúnmente utilizados para evaluar
predicciones.
Error
Error Medio
Error Medio Absoluto
Suma de Cuadrados del Error
Suma de Cuadrados del Error Media o Error Cuadrático Medio
Desviación Estándar del Error
Nótese que Pt no es la media de las estimaciones o valores pronosticados como se
podría pensar. Esto significa que la desviación no se mide respecto de la media,
sino que se promedian las desviaciones de las estimaciones respecto a los valores
reales.
Error Porcentual
Error Porcentual Medio
Error Porcentual Medio Absoluto
Error Porcentual Medio Cuadrático
1.12. OTROS MÉTODOS NO CONVENCIONALES
En el afán del hombre por disminuir la inc ertidumbre y aumentar el conocimiento
sobre el comportamiento de las cosas que parecen aleatorias ha desarrollado otros
métodos no convencionales para la predicción y la disminución de esta
incertidumbre. Dichos métodos presentan un nivel mucho más alto de complejidad,
en su mayoría surgieron de la imitación de procesos de la naturaleza. Algunos de
estos métodos no convencionales de predicción son: Redes neuronales Artificiales,
Support vector machine, La Programación genética y filtro kalman.
Redes neuronales Artificiales (RNA) que son dispositivos o software programado de
manera tal que funcionen como las neuronas biológicas de los seres vivos. (Estas
sus características,
usos y funcionamiento serán profundizados en el siguiente
capitulo).
Maquina de soporte vectorial del ingles Support vector machine La SVM fue ideada
originalmente para la resolución de problemas de clasificación binarios en los que
las clases eran linealmente separables (Vapnik y Lerner, 1965). Por este motivo se
conocía también como «hiperplano3 óptimo de decisión» ya que la solución
proporcionada es aquella en la que se clasifican correctamente todas las muestras
disponibles, colocando el hiperplano de separación lo más lejos posible de todas
ellas. Las muestras más próximas al hiperplano óptimo de separación son
conocidas como muestras críticas o «vectores soporte», que es lo que da nombre a
la SVM.
[10]
La Programación genética en cuyos algoritmos hace evolucionar una población
sometiéndola a acciones aleatorias semejantes a las que actúan en la evolución
biológica (mutaciones y recombinación genética), así como también a una selección
de acuerdo con algún criterio, en función del cual se decide cuáles son los
individuos más adaptados, que sobreviven, y cuáles los menos aptos, que son
descartados.
ha tenido gran parte de su utilización para resolver este tipo de
problemas de predicción de eventos.
Filtro kalman (kalman filter) Algoritmo recursivo que se utiliza en ARIMA para
generar valores ajustados y residuos para una serie.
3
Las variedades afines de dimensión 0 en son los subconjuntos de
reducidos a un punto. Las de dimensión 1 se llaman
RECTAS. Las de dimensión 2 se llaman PLANOS. Una variedad afín se llama HIPERPLANO si su dirección
es un
subespacio maximal en
, es decir,
y el único subespacio de
que contiene a
propiamente es
entero .
1.13. APLICACIONES DE LAS SERIES DE TIEMPO
El estudio de las Series de Tiempo tiene como objetivo central desarrollar modelos
estadísticos que expliquen el comportamiento de una variable aleatoria que varia
con el tiempo, o con la distancia, o según un índice; y que permitan estimar
pronósticos futuros de dicha variable aleatoria.
Por ello,
el manejo de las Series de Tiempo es de vital importancia en una
planeación y en mareas del conocimiento donde evaluar el efecto de una política
pasada sobre una variable,
y/o conocer predicciones de sus valores futuros,
aportan criterios que disminuyen el riesgo en la toma de decisiones o en la
implementación de políticas futuras.
En el contexto de las Series de Tiempo,
pronosticar significa predecir valores
futuros de una variable aleatoria basándose en el estudio de la estructura definida
por las observaciones pasadas de la variable, o en el análisis de observaciones
pasadas de variables que explican su variación, suponiendo que la estructura del
pasado se conserva en el futuro.
La existencia del intervalo de tiempo comprendido entre presente y el momento en
el cual ocurrirá el suceso o evento de interés, llamado tiempote previsión oleading
time, origina la necesidad de conocer un pronostico del evento; para así, poder
planear y ejecutar acciones que contrarresten o controlen los efectos que dicho
suceso producirá. La longitud de este intervalo de tiempo da origen a la planeación;
si no existiera o fuera muy pequeño, se estaría enfrentando a situaciones concretas
que deben resolverse mediante acciones inmediatas, más no planearse.
En consecuencia, cuando el tiempo de previsión es apropiado y el resultado final
del evento de interés esta condicionado por factores identificables, la planeación
adquiere sentido y el conocimiento del pronostico del evento permite tomar
decisiones sobre acciones a ejecutar o a controlar para que los resultados finales
estén acordes con la política general de la empresa.
Es importante anotar que existen factores o eventos que influyen en la calidad de un
pronóstico.
Estos factores pueden ser internos o controlables y externos o
incontables. [4]
2. REDES NEURONALES
En este capitulo se abordara el tema de redes neuronales basados en la estructura
del libro Redes Neuronales y Sistemas Difusos de los profesores Martín del Brío y
Sanz Molina [12], debido a su gran énfasis en aplicaciones practicas, su abundancia
de ejemplos y la rigurosidad teórica con que tratan la materia.
2. 1. INTRODUCCION
En el transcurso del capitulo se pretende introducir los conceptos y herramientas
básicas necesarias para el desarrollo de los temas abordados en el capitulo 4,
principal objetivo de este trabajo.
Este capitulo se trabajo basado en referencias e investigaciones sobre los
principales detalles acerca del tema, tal que una persona que no conozca sobre el
tema se relacione con los conceptos de la materia. En primera medida se hará un
recuento cronológico breve de la historia de las redes y su evolución a través de los
años, luego se hará un desarrollo comparativo entre la principal fuente de ideas para
las redes neuronales artificiales, la neurona natural.
Con los conceptos básicos ya desarrollados se entrara en la descripción de la teoría
que fundamenta el desarrollo de las redes neuronales, como son las principales
topologías y el proceso de entrenamiento.
Finalizando el capitulo se definirán topologías especificas que serán usadas
posteriormente en este trabajo
algoritmo del backpropagation.
como el modelo del perceptron multicapa y el
2.2. HISTORIA
Conseguir diseñar y construir máquinas capaces de realizar procesos con cierta
inteligencia ha sido uno de los principales objetivos de los científicos a lo largo de la
historia.
1936 - Alan Turing. Fue el primero en estudiar el cerebro como una forma de ver el
mundo de la computación. Sin embargo, los primeros teóricos que concibieron los
fundamentos de la computación neuronal fueron Warren McCulloch, un
neurofisiólogo, y Walter Pitts, un matemático, quienes, en 1943, lanzaron una teoría
acerca de la forma de trabajar de las neuronas (Un Cálculo Lógico de la Inminente
Idea de la Actividad Nerviosa - Boletín de Matemática Biofísica 5: 115-133). Ellos
modelaron una red neuronal simple mediante circuitos eléctricos. [13]
1943 - Teoría de las Redes Neuronales Artificiales. Walter Pitts junto a Bertran
Russell y Warren McCulloch intentaron explicar el funcionamiento del cerebro
humano, por medio de una red de células conectadas entre sí, para experimentar
ejecutando operaciones lógicas. Partiendo del menor suceso psíquico (estimado por
ellos): el impulso todo/nada, generado por una célula nerviosa.
El bucle "sentidos - cerebro - músculos", mediante la retroalimentación producirían
una reacción positiva si los músculos reducen la diferencia entre una condición
percibida por los sentidos y un estado físico impuesto por el cerebro. También
definieron la memoria como un conjunto de ondas que reverberan en un circuito
cerrado de neuronas. [13]
1949 - Donald Hebb. Escribió un importante libro: La organización del
comportamiento, en el que se establece una conexión entre psicología y fisiología.
Fue el primero en explicar los procesos del aprendizaje (que es el elemento básico
de la inteligencia humana) desde un punto de vista psicológico, desarrollando una
regla de como el aprendizaje ocurría. Aun hoy, este es el fundamento de la mayoría
de las funciones de aprendizaje que pueden hallarse en una red neuronal. Su idea
fue que el aprendizaje ocurría cuando ciertos cambios en una neurona eran
activados. También intentó encontrar semejanzas entre el aprendizaje y la actividad
nerviosa. Los trabajos de Hebb formaron las bases de la Teoría de las Redes
Neuronales. [14]
1950 - Karl Lashley. En sus series de ensayos, encontró que la información no era
almacenada en forma centralizada en el cerebro sino que era distribuida encima de
él. [13]
1956 - Congreso de Dartmouth. Este Congreso frecuentemente se menciona para
indicar el nacimiento de la inteligencia artificial. Durante el congreso se forjó el
término "inteligencia artificial". Asistieron, entre otros, Minsky, Simon y Newell. [13]
1957 - Frank Rosenblatt. Comenzó el desarrollo del Perceptron. Esta es la red
neuronal más antigua; utilizándose hoy en día para aplicación como identificador de
patrones. Este modelo era capaz de generalizar, es decir, después de haber
aprendido una serie de patrones podía reconocer otros similares, aunque no se le
hubiesen presentado en el entrenamiento. Sin embargo, tenía una serie de
limitaciones, por ejemplo, su incapacidad para resolver el problema de la función
OR-exclusiva y, en general, era incapaz de clasificar clases no separables
linealmente, este tema acerca del perceptrón se describe con detalle en la sección
2.10.2. Perceptron Simple. [13]
1959 - Frank Rosenblatt: Principios de Neurodinámica. En este libro confirmó que,
bajo ciertas condiciones, el aprendizaje del Perceptron convergía hacia un estado
finito (Teorema de Convergencia del Perceptron).[14]
1960 - Bernard Widroff/Marcian Hoff. Desarrollaron el modelo Adaline (ADAptative
LINear Elements). Esta fue la primera red neuronal aplicada a un problema real
(filtros adaptativos para eliminar ecos en las líneas telefónicas) que se ha utilizado
comercialmente durante varias décadas. [13]
1961 - Karl Steinbeck: Die Lernmatrix. Red neuronal para simples realizaciones
técnicas (memoria asociativa). [14]
1969 - En este año surgieron críticas que frenaron, hasta 1982, el crecimiento que
estaban experimentando las investigaciones sobre redes neuronales. Minsky y
Papera, del Instituto Tecnológico de Massachussets (MIT), publicaron un libro
Perceptrons. Probaron (matemáticamente) que el Perceptrón no era capaz de
resolver problemas relativamente fáciles, tales como el aprendizaje de una función
linealmente no separable. Esto demostró que el Perceptrón era muy débil, dado que
las funciones linealmente no separable son extensamente empleadas en
computación y en los problemas del mundo real. A pesar del libro, algunos
investigadores continuaron su trabajo. Tal fue el caso de James Anderson, que
desarrolló un modelo lineal, llamado Asociador Lineal, que consistía en unos
elementos integradores lineales (neuronas) que sumaban sus entradas. Este
modelo se basa en el principio de que las conexiones entre neuronas son
reforzadas cada vez que son activadas. Anderson diseñó una potente extensión del
Asociador Lineal, llamada Brain State in a Box (BSB). [14]
1974 - Paul Werbos. Desarrolló la idea básica del algoritmo de aprendizaje de
propagación hacia atrás (backpropagation); cuyo significado quedó definitivamente
aclarado en 1985. [13]
1977 - Stephen Grossberg: Teoría de Resonancia adaptativa (TRA). La Teoría de
Resonancia adaptativa es una arquitectura de red que se diferencia de todas las
demás previamente inventadas. La misma simula otras habilidades del cerebro:
memoria a largo y corto plazo. [14]
1985 - John Hopfield. Provocó el renacimiento de las redes neuronales con su libro:
“Computación neuronal de decisiones en problemas de optimización.” [14]
1986 - David Rumelhart/G. Hinton. Redescubrieron el algoritmo de aprendizaje de
propagación hacia atrás (backpropagation). A partir de 1986, el panorama fue
alentador con respecto a las investigaciones y el desarrollo de las redes neuronales.
En la actualidad, son numerosos los trabajos que se realizan y publican cada año,
las aplicaciones nuevas que surgen (sobretodo en el área de control) y las
empresas que lanzan al mercado productos nuevos, tanto hardware como software
(sobre todo para simulación). [13]
2.3. NEURONA BIOLÓGICA
Se estima que el cerebro humano contiene más de cien mil millones de neuronas y
sinápsis en el sistema nervioso humano. Estudios sobre la anatomía del cerebro
humano concluyen que hay más de 1000 sinápsis a la entrada y a la salida de cada
neurona. Es importante notar que aunque el tiempo de conmutación de la neurona
(unos pocos milisegundos) es casi un millón de veces menor que en las actuales
elementos de las computadoras, ellas tienen una conectividad miles de veces
superior que las actuales supercomputadoras. [13]
El objetivo principal de de las redes neuronales de tipo biológico es desarrollar un
elemento sintético para verificar las hipótesis que conciernen a los sistemas
biológicos. Las neuronas y las conexiones entre ellas (sinápsis) constituyen la clave
para el procesado de la información.
Desde un punto de vista funcional, las neuronas
constituyen procesadores de información sencillos.
Como todo sistema de este tipo, poseen un canal
de entrada de información, las dendritas, un
órgano de cómputo, el soma, y un canal de salida,
el axón. [12]
La neurona es la célula fundamental y básica del
sistema
nervioso.
Es
una
célula
alargada,
especializada en conducir impulsos nerviosos. En
las neuronas se pueden distinguir tres partes
fundamentales, que son:
•
Figura 2.1: Neurona Biológica
Soma o cuerpo celular: corresponde a la parte más voluminosa de la neurona.
Aquí se puede observar una estructura esférica llamada núcleo. Éste contiene la
información que dirige la actividad de la neurona. Además, el soma se encuentra
el citoplasma. En él se ubican otras estructuras que son importantes para el
funcionamiento de la neurona.
•
Dendritas: son prolongaciones cortas que se originan del soma neural. Su
función es recibir impulsos de otras neuronas y enviarlas hasta el soma de la
neurona.
•
Axón: es una prolongación única y larga. En algunas ocasiones, puede medir
hasta un metro de longitud. Su función es sacar el impulso desde el soma
neuronal y conducirlo hasta otro lugar del sistema.
Las neuronas son muy variadas en morfología y tamaño. Pueden ser estrelladas,
fusiformes, piriformes. Pueden medir no más de cuatro micras o alcanzar las 130
micras. También son muy variadas en cuanto a las prolongaciones: las dendritas y
el cilindroeje o axón. Las dendritas, de conducción centrípeta, pueden ser únicas o
múltiples.
La unión entre dos neuronas se denomina sinapsis. En el tipo de sinapsis más
común no existe un contacto físico entre las neuronas, sino que éstas permanecen
separadas por un pequeño vacío de unas 0.2 micras.
En relación a la sinapsis, se habla de neuronas presinápticas (la que envía las
señales) y postsinápticas (la que las recibe). Las sinapsis son direccionales, es
decir, la información fluye siempre en un único sentido.
Las señales nerviosas se pueden transmitir eléctrica o químicamente. La
transmisión química prevalece fuera de la neurona, mientras que la eléctrica lo hace
el interior. La transmisión química se basa en el intercambio de neurotransmisores
mientras que la eléctrica hace uso de descargas que se producen en el cuerpo
celular y que se propagan por el axón.
La forma de comunicación más habitual entre dos neuronas es de tipo químico La
neurona presináptica libera unas sustancias químicas complejas denominadas
neurotransmisores (como el glutamato o la adrenalina), que atraviesan el vació
sináptico. Si la neurona postsináptica posee en las dendritas o en el soma canal
sensibles a los neurotransmisores liberados, los fijarán, y como consecuencia de el
permitirán el paso de determinados iones a través de la membrana.
Las corrientes iónicas que de esta manera se crean provocan pequeños potenciales
postsinápticos excitadores (positivos) o inhibidores (negativos), que se integrarán en
el soma, tanto espacial como temporalmente; éste es el origen de la existencia de
sinapsis excitatoria y de sinapsis inhibitorias.
Si se ha producido un suficiente número de excitaciones, Suma de los potenciales
positivos generados puede elevar el potencial de la neuronas por encima de los -45
mV (umbral de disparo): en ese momento se abren bruscamente los Canales de
sodio, de modo que los iones Na cuya concentración en el exterior es alta, entran
masivamente al interior, provocando la despolarización brusca de neurona, que
pasa de un potencial de reposo de -60 mV a unos +50 mV.
A continuación la neurona vuelve a la situación original de reposo de -6OmV; este
proceso constituye la generación de un potencial de acción (Figura 1.3), que
propagarse a lo largo del axón da lugar a la transmisión eléctrica de la señal
nerviosa. Tras haber sido provocado un potencial de acción, la neurona sufre un
periodo refractario durante el cual no puede generarse uno nuevo.
Un hecho importante es que el pulso así generado es “digital en el sentido que
existe o no existe pulso, y todos ellos s on de la misma magnitud.
Por otra parte ante una estimulación más intensa disminuye el intervalo entre
pulsos, por lo que la neurona se disparará a mayor frecuencia cuanto mayor sea el
nivel de excitación. Es decir ante un estímulo mayor la frecuencia de respuesta
aumenta hasta que se alcanza una saturación conforme se acerca a la frecuencia
máxima
La frecuencia de disparo oscila habitualmente entre 1 y 100 pulsos por segundo,
aunque algunas neuronas pueden llegar a los 500 durante pequeños períodos de
tiempo. Por otra parte, no todas las neuronas se disparan generando un tren de
pulsos de una frecuencia aproximadamente constante, pues la presencia de otras
especies iónicas hace que diferentes tipos de neuronas posean patrones de disparo
distintos, en forma de trenes puros, paquetes de pulsos, o presentando patrones
más complejos.
El mecanismo aquí descrito constituye la forma más común de transmisión de la
señal nerviosa, pero no el único. Cuando la distancia que debe recorrer la señal es
menor de 1 mm la neurona puede no codificarla en frecuencia, sino enviar una señal
puramente analógica. Es decir, la evolución biológica encontró que a distancias
cortas la señal no se degradaba sustancialmente, por lo que podía enviarse tal cual,
mientras que a distancias largas era preciso codificarla para evitar su degradación la
consiguiente pérdida de información. La naturaleza descubrió que la codificación en
forma de frecuencia de pulsos digitales proporcionaba calidad, simplicidad en la
transmisión.1 [12]
2.4. MODELO DE NEURONA ARTIFICIAL
En esta sección se expone el modelo de neurona de los ANS. En primer lugar se
describe la estructura de una neurona artificial muy genérica, para a continuación
mostrar una versión simplificada, de amplio uso en los modelos orientados
aplicaciones prácticas, que posee una estructura más próxima a la neurona tipo
McCulloch-Pitts [1949].
1
Más información sobre el cerebro, las neuronas y la neurotransmision en una pagina denominada el
abc de las neuronas, impulsada por el Instituto de Investigaciones Biológicas Clemente Estable.
http://iibce.edu.uy/uas/neuronas/abc.htm
2.4.1. MODELO GENERAL
Se denomina procesador elemental o neurona a un dispositivo simple de cálculo
que, a partir de un vector de entrada proc edente del exterior o de otras neuronas
proporciona una única respuesta o salida. [12]
Los elementos que constituyen la neurona de etiqueta i son los siguientes (véase la
Figura 2.2):
Figura 2.2: Modelo Genérico Neurona Artificial
•
Conjunto de entradas, xJ (t)
•
Pesos sinápticos de la neurona i, w IJ que representan la intensidad de
interacción entre cada neurona presináptica j y la neurona postsináptica i.
•
Regla de propagación x que proporciona el valor del potencial postsináptico hJ (t)
= s(wIJ , xJ (t)) de la neurona i en función de sus pesos y entradas.
•
Función de desempeño fi(aI (t-1), hI (t)) que proporciona el estado de activación
actual aI (t) = fi(aI (t-1), hI(t)) de la neurona i, en función de su estado anterior aI (t1) y de su potencial postsináptico actual.
•
Función de salida FI (aI (t-1), que proporciona la salida actual yI (t) = FI(aI (t-1) de la
neurona i en función de su estado de activación.
Este modelo de neurona formal se inspira en la operación de la biológica, en el
sentido de integrar una serie de entradas y proporcionar cierta respuesta, que se
propaga por el axón. A continuación se describen cada uno de los elementos. [12]
2.4.1.1. ENTRADAS Y SALIDAS.
Las variables de entrada y salida pueden ser binarias (digitales) o continuas
(analógicas), dependiendo del modelo y aplicación. Por ejemplo, un perceptron
multicapa o MLP (Multilayer Perceptron) admite ambos tipos de señales. Así, para
tareas de clasificación poseería salidas digitales {O, +1}, mientras que para un
problema de ajuste funcional de una aplicación multivariable continua, se utilizarían
salidas continuas pertenecientes a un cierto intervalo.
Dependiendo del tipo de salida, las neuronas suelen recibir nombres específicos.
Así, las neuronas estándar cuya salida sólo puede tomar los valores 0 o 1 se suelen
denominar genéricamente neuronas de tipo McCullochPitts, mientras que aquellas que únicamente pueden tener por salidas -1 o + 1 se
suelen denominar neuronas tipo Ising (debido al paralelismo con los modelos físicos
de partículas con espín que pueden adoptar únicamente dos estados, hacia arriba y
hacia abajo). Si puede adoptar diversos valores discretos en la salida (por ejemplo, 2, + 1, +2), se dice que se trata de una neurona de tipo Potts. En ocasiones, el
rango de los valores que una neurona de salida continua se suele limitar un intervalo
definido, por ejemplo, [ +1] o [ +1]. [12]
2.4.1.2. REGLA DE PROPAGACION
La regla de propagación permite obtener, a partir de las entradas y los pesos el
valor del potencial postsináptico h I de la neurona. La función más habitual es de tipo
lineal, y se basa en la suma ponderada las entradas con los pesos sinápticos
que formalmente también puede interpretarse como producto escalar de los
vectores de entrada y los pesos. [12]
2.4.1.3. FUNCIÓN DE ACTIVACION
La función de desempeño o de transferencia proporciona el estado de actual aI (t) a
partir del potencial postsináptico hI (t) y del propio estado de anterior aI (t-1). Sin
embargo, en muchos modelos se considera que el estado actual de neurona no
depende de su es estado anterior, sino únicamente del actual.
La función de desempeño se suele considerar determinista, y en la mayor parte de
los modelos es monótona creciente y continua, como se observa habitualmente en
las neuronas. Las funciones de activación más empleadas en muestra en la figura
2.3.
En ocasiones los algoritmos de aprendizaje requieren que la función de desempeño
cumpla la Condición de ser derivable. Las más empleadas en este sentido son las
funciones de tipo sigmoideo. [12]
Para explicar porque se utilizan estas funciones de activación se suele emplear la
analogía a la aceleración de un automóvil. Cuando un auto inicia su movimiento
necesita una potencia elevada para comenzar a acelerar. Pero al ir tomando
velocidad, este demanda un menor incremento de dicha potencia para mantener la
aceleración. Al llegar a altas velocidades, nuevamente un amplio incremento en la
potencia es necesario para obtener una pequeña ganancia de velocidad. En
resumen, en ambos extremos del rango de aceleración de un automóvil se demanda
una mayor potencia para la aceleración que en la mitad de dicho rango. [15]
Figura 2.3: Funciones de activación más usuales
2.4.1.4. FUNCIÓN DE SALIDA
Esta función proporciona la salida global de la neurona y en función de su estado de
activación actual aI (t). Muy frecuentemente la función de salida es simplemente la
identidad f(x) = x de modo que el estado de activación de la neurona se considera
como la propia salida. [12]
2.4.2. MODELO ESTANDAR
Figura 2.4: Modelo de Neurona Estándar
El modelo de neurona expuesto en la sección anterior resulta muy general la
práctica suele utilizarse uno más simple, que se denomina neurona estándar, la
neurona estándar consiste en
•
Un conjunto de entradas xI (t) y pesos sinápticos w IJ
•
Una regla de propagación
•
Una función de desempeño que representa simultáneamente la salida de la
es la más común.
neurona y su estado de activación.
Con frecuencia se añade al conjunto de pesos de la neurona un parámetro adicional
? que se denomina umbral, que se resta del potencial postsináptico. En conclusión,
el modelo de neurona estándar queda:
2.5. REDES NEURONALES Y ARQUITECTURAS
Las redes neuronales artificiales (ANN) son sistemas paralelos para el
procesamiento de la información, inspirados en el modo en el que las redes de
neuronas biológicas del cerebro procesan información. [15]
Debido a la inspiración de las ANN en el cerebro, sus aplicaciones principales
estarán centradas en campos donde la inteligencia humana no pueda ser emulada
de forma satisfactoria por algoritmos aritméticos que pueden ser implementados en
ordenadores. Además es de prever que dichas ANN tengan características similares
a las del cerebro:
•
Serán robustas i tolerantes a fallos. En el cerebro mueren todos los días gran
cantidad de neuronas sin afectar sensiblemente a su funcionamiento.
•
Serán flexibles. El cerebro se adapta a nuevas circunstancias mediante el
aprendizaje
•
Podrán trabajar con información borrosa, incompleta, probabilística, con ruido o
inconsistente.
•
Serán altamente paralelas. El cerebro esta formado por muchas neuronas
interconectadas entre si y es precisamente el comportamiento colectivo de todas
ellas lo que caracteriza su forma de procesar la información.
El punto clave de las ANN es la nueva estructura de estos sistemas para el
procesamiento de la información. Estos están compuestos, al igual que el cerebro,
por un número muy elevado de elementos básicos (las neuronas), altamente
interconectados entre ellos y con modelo de respuesta para cada elemento en
función de su entorno muy parecido al comportamiento de las neuronas biológicas.
Estos modelos son simulados en ordenadores convencionales y es el
comportamiento colectivo de todos los elementos lo que le confiere esas
características tan peculiares para la resolución de problemas complejos. Las ANNs,
como las personas, aprenden a partir de ejemplos. Aprender en sistemas biológicos
involucra la modificación de la ínter conectividad entre las neuronas y esto es
también cierto para las ANNs. [13]
Las ANNs han sido aplicadas a un creciente número de problemas reales de
considerable complejidad, por ejemplo reconocimiento de patrones, clasificación de
datos, predicciones, etc. Su ventaja más importante esta en solucionar problemas
que son demasiado complejos para las técnicas convencionales: problemas que no
tienen un algoritmo específico para su solución, o cuyo algoritmo es demasiado
complejo para ser encontrado.
A continuación se puede ver, en la Figura 2.5, un esquema de una red neuronal:
Figura 2.5: Ejemplo de una red neuronal totalmente conectada
La misma está constituida por neuronas interconectadas y arregladas en tres capas
(esto último puede variar). Los datos ingresan por medio de la “capa de entrada”,
pasan a través de la “capa oculta” y salen por la “capa de salida”. Cabe mencionar
que la capa oculta puede estar constituida por varias capas.
2.5.1. TIPOS DE ARQUITECTURA
Se denomina arquitectura a la topología, estructura o patrón de conexionado de una
red neuronal. [12]
Atendiendo a distintos conceptos, pueden establecerse diferentes tipos de
arquitecturas neuronales.
Figura 2.6: Ejemplos de arquitecturas neuronales
Así, en relación a su estructura en capas, se puede hablar de redes monocapa y de
redes multicapa. Las redes monocapa son aquellas compuestas por una única capa
de neuronas. Las redes multicapa (layered networks) son aquellas cuyas neuronas
se organizan en varias capas.
Asimismo, atendiendo al flujo de datos en la red neuronal, se puede hablar de redes
unidireccionales (feedforward) y redes recurrentes (feedback). En las redes
unidireccionales la información circula en un único sentido, desde las neuronas de
entrada hacia las de salida. En las redes recurrentes o realimentadas la información
puede circular entre las capas en cualquier sentido, incluido el de salida-entrada.
Por último, también se habla de redes autoasociativas y heteroasociativas. Con
frecuencia se interpreta la operación de una red neuronal como la de una memoria
asociativa que ante un determinado patrón de entradas responde con un cierto
patrón
Si una red se entrena para que ante la presentación de un patrón A responda otra
diferente B, se dice que la red es heteroasociativa. Si una red es entrenada para
que asocie un patrón A consigo mismo, se dice que es autoasociativa.
2.6. APRENDIZAJE DE UNA RED NEURONAL
El aprendizaje es el proceso por el cual una red neuronal modifica sus pesos en
respuesta a una información de entrada. Los cambios que se producen durante el
mismo se reducen a la destrucción, modificación y creación de conexiones entre las
neuronas. Una red neuronal debe aprender a calcular la salida correcta para cada
constelación (arreglo o vector) de entrada en el conjunto de ejemplos. [15]
Este proceso de aprendizaje se denomina: Proceso de Entrenamiento o
Acondicionamiento. El conjunto de datos (o conjunto de ejemplos) sobre el cual este
proceso se basa es, por ende, llamado: Conjunto de datos de Entrenamiento.
Durante el proceso de aprendizaje, los pesos de las conexiones de la red sufren
modificaciones, por lo tanto, se puede afirmar que este proceso ha terminado (la red
ha aprendido) cuando los valores de los pesos permanecen estables, si los pesos
cambian y sus valores son iguales a 0, se dice que la conexión de la red se ha
destruido. De esta manera, se dice que los pesos se han adaptado, ya que sus
valores son distintos de 0 y su derivada es igual a 0.
En otras palabras el aprendizaje es el proceso por el cual una red neuronal modifica
sus pesos en respuesta a una información de entrada. Los cambios que se
producen durante el mismo se reducen a la destrucción, modificación y creación de
conexiones entre las neuronas.
Un aspecto importante respecto al aprendizaje de las redes neuronales es el
conocer cómo se modifican los valores de los pesos, es decir, cuáles son los
criterios que se siguen para cambiar el valor asignado a las conexiones cuando se
pretende que la red aprenda una nueva información. [13]
Clásicamente se distinguen dos modos de operación en los sistemas neuronales el
modo recuerdo o ejecución, y el modo aprendizaje o entrenamiento.
2.6.1. FASE DE APRENDIZAJE. CONVERGENCIA
Hay dos métodos de aprendizaje importantes que pueden distinguirse:
•
Aprendizaje supervisado.
•
Aprendizaje no supervisado.
2.6.1.1. APRENDIZAJE SUPERVISADO
El aprendizaje supervisado se caracteriza porque el proceso de aprendizaje se
realiza mediante un entrenamiento controlado por un agente externo (supervisor,
maestro) que determina la respuesta que debería generar la red a partir de una
entrada determinada. El supervisor controla la salida de la red y en caso de que ésta
no coincida con la deseada, se procederá a modificar los pesos de las conexiones,
con el fin de conseguir que la salida obtenida se aproxime a la deseada. En este tipo
de aprendizaje se suelen considerar, a su vez, tres formas de llevarlo a cabo, que
dan lugar a los siguientes aprendizajes supervisados:
•
Aprendizaje por corrección de error: Consiste en ajustar los pesos de las
conexiones de la red en función de la diferencia entre los valores deseados y los
obtenidos a la salida de la red, es decir, en función del error cometido en la
salida.
•
Aprendizaje por refuerzo: Se trata de un aprendizaje supervisado, más lento que
el anterior, que se basa en la idea de no disponer de un ejemplo completo del
comportamiento deseado, es decir, de no indicar durante el entrenamiento
exactamente la salida que se desea que proporcione la red ante una
determinada entrada. En el aprendizaje por refuerzo la función del supervisor se
reduce a indicar mediante una señal de refuerzo si la salida obtenida en la red
se ajusta a la deseada (éxito = +1 o fracaso = -1), y en función de ello se ajustan
los pesos basándose en un mecanismo de probabilidades. Se podría decir que
en este tipo de aprendizaje la función del supervisor se asemeja más a la de un
crítico (que opina sobre la respuesta de la red) que a la de un maestro (que
indica a la red la respuesta concreta que debe generar), como ocurría en el caso
de supervisión por corrección del error.
•
Aprendizaje estocástico: Consiste básicamente en realizar cambios aleatorios en
los valores de los pesos de las conexiones de la red y evaluar su efecto a partir
del objetivo deseado y de distribuciones de probabilidad. En pocas palabras el
aprendizaje consistiría en realizar un cambio aleatorio de los valores de los
pesos y determinar la energía de la red. Si la energía es menor después del
cambio, es decir, si el comportamiento de la red se acerca al deseado, se acepta
el cambio; si, por el contrario, la energía no es menor, se aceptaría el cambio en
función de una determinada y preestablecida distribución de probabilidades.
2.6.1.2. APRENDIZAJE NO SUPERVISADO
Las
redes
con
aprendizaje
no
supervisado
(también
conocido
como
autosupervisado) no requieren influencia externa para ajustar los pesos de las
conexiones entre sus neuronas. La red no recibe ninguna información por parte del
entorno que le indique si la salida generada en respuesta a una determinada
entrada es o no correcta. Estas redes deben encontrar las características,
regularidades, correlaciones o categorías que se puedan establecer entre los datos
que se presenten en su entrada.
Existen varias posibilidades en cuanto a la interpretación de la salida de estas
redes, que dependen de su estructura y del algoritmo de aprendizaje empleado. En
cuanto a los algoritmos de aprendizaje no supervisado, en general se suelen
considerar dos tipos, que dan lugar a los siguientes aprendizajes:
•
Aprendizaje hebbiano: Esta regla de aprendizaje es la base de muchas otras, la
cual pretende medir la familiaridad o extraer características de los datos de
entrada. El fundamento es una suposición bastante simple: si dos neuronas Ni y
Nj toman el mismo estado simultáneamente (ambas activas o ambas inactivas),
el peso de la conexión entre ambas se incrementa. Las entradas y salidas
permitidas a la neurona son: {-1, 1} o {0, 1} (neuronas binarias). Esto puede
explicarse porque la regla de aprendizaje de Hebb se originó a partir de la
neurona biológica clásica, que solamente puede tener dos estados: activa o
inactiva.
•
Aprendizaje competitivo y comparativo: Se orienta a la clusterización o
clasificación de los datos de entrada. Como característica principal del
aprendizaje competitivo se puede decir que, si un patrón nuevo se determina
que pertenece a una clase reconocida previamente, entonces la inclusión de
este nuevo patrón a esta clase matizará la representación de la misma. Si el
patrón de entrada se determinó que no pertenece a ninguna de las clases
reconocidas anteriormente, entonces la estructura y los pesos de la red neuronal
serán ajustados para reconocer la nueva clase.
2.6.2. FASE DE RECUERDO O EJECUCIÓN. ESTABILIDAD
Generalmente (aunque no en todos los modelos), una vez que el sistema ha sido
entrenado, el aprendizaje se desconecta por lo que los pesos y la estructura quedan
fijos, estando la red neuronal ya dispuesta para procesar datos. Este modo de
operación se denomina modo recuerdo (recall) o de ejecución. [12]
En las redes unidireccionales, ante un patrón de entrada, las neuronas responden
proporcionando directamente la salida del sistema. Al no existir bucles de
realimentación no existe ningún problema en relación con su estabilidad. Por el
contrario, las redes con realimentación son sistemas dinámicos no lineales, que
requieren ciertas condiciones para que su respuesta acabe convergiendo a un
estado estable o punto fijo. Una serie de teoremas generales como el Teorema de
Cohen – Grossberg – Kosko2, indican las condiciones que aseguran la estabilidad
de la respuesta en una amplia gama de redes neuronales, bajo determinadas
condiciones.
Para demostrar la estabilidad del sistema, estos teoremas se basan en el método de
Lyapunov 3, como alternativa al mucho más tedioso método directo.
El método de Lyapunov constituye una manera asequible de estudiar la estabilidad
de un sistema dinámico. Es interesante observar que con la formulación matemática
planteada en este método simplemente se está expresando que si se es capaz de
encontrar una cierta función energía del sistema, que disminuya siempre en su
operación, entonces el sistema es estable. [12]
Una técnica similar empleó Hopfield para demostrar que su modelo de red
completamente interconectada era estable en de que la matriz de pesos sinápticos
fuese simétrica y de diagonal nula.
Esta técnica es también la que Cohen, Grossberg y Kosko han aplicado en los
teoremas citados para demostrar la estabilidad de una amplia clase de redes
neuronales realimentadas, autoasociativas y heteroasociativas. Así, el teorema de
Cohen-Grossber
determina
las
condiciones
de
estabilidad
para
redes
autoasociativas no adaptativas, el de Cohen-Grossberg-Kosko, establece las
2
El enunciado completo de los teorema así como el desarrollo y la explicación de ellos se pueden ver
en
http://www.nsi.edu/users/izhikevich/publications/arbib.pdf
3
Para mas información sobre el método de Lyapunov, ver el articulo “Sobre el Método de Lyapunov”
en http://www.red -mat.unam.mx/foro/volumenes/vol010/volten_2.html
condiciones de estabilidad para redes autoasociativas adaptativas; y, por último, el
teorema ABAM de Kosko lo hace pata redes adaptativas heteroasociativas.
2.7.
CLASIFICACION DE LOS MODELOS NEURONALES
Dependiendo del modelo concreto de neurona que se utilice, de la arquitectura o
topología de la conexión, y del algoritmo de aprendizaje, surgirán distintos modelos
de redes neuronales.
De la multitud de modelos y variantes que de hecho existen, unos cincuenta son
medianamente conocidos, aunque tan sólo aproximadamente una quincena son
utilizados con asiduidad en las aplicaciones prácticas. Por lo tanto, para llevar a
cabo el estudio sistemático de los modelos se precisa algún tipo de clasificación.
Los dos conceptos que más caracterizan un modelo neuronal son el aprendizaje y la
arquitectura de la red, por ello, se considera que la clasificación debe atender
ambos aspectos.
Figura 2.7 Clasificación de los ANS por el tipo de aprendizaje y arquitectura
De esta manera, en primer lugar, se realiza una distinción en cuanto al tipo de
aprendizaje, por lo que aparece una primera clasificación en modelos supervisados,
no supervisados, de aprendizaje híbrido y modelos de aprendizaje reforzado. A su
vez, y dentro de cada uno de los grandes grupos, tendremos en cuenta el tipo de
topología de la red, por lo que se distinguirá además entre redes realimentadas y
redes unidireccionales (no realimentadas). La clasificación que surge se muestra en
la Figura 2.7. [12]
Se puede apreciar que el conjunto de modelos de redes no realimentadas y de
aprendizaje supervisado es el más numeroso. Esta clase de modelos resulta
especialmente importante por varias razones: por su interés histórico, generalidad,
por ilustrar una amplia clase de aspectos que aparecen con frecuencia en todo el
campo de las redes neuronales (memoria asociativa, clasificación, aproximación
funcional, etc.), y además por ser los sistemas neuronales más empleados en las
aplicaciones prácticas.
2.8. COMPUTABILIDAD NEURONAL
Establecidos los. ANS como un estilo de procesamiento alternativo complementario
al clásico basado en computadores digitales serie (tipo von Neumann), se hace
necesario profundizar en sus características computacionales. Es bien sabido que
un ordenador digital constituye una máquina universal de Turing, por lo que puede
realizar cualquier cómputo. Además, al estar construido en base a funciones lógicas,
se deduce que cualquier problema computacional puede ser resuelto con funciones
booleanas.
Se ha discutido extensamente sobre las características computacionales de los
ANS, demostrándose en particular que, al igual que los computadores digitales
convencionales, las redes neuronales son formalmente capaces de resolver
cualquier problema computacional.[12].
Por lo tanto, los ANS, como los ordenadores convencionales, son máquinas
universales, por lo que para resolver un determinado problema, cualquiera de las
dos aproximaciones sería perfectamente válida, en principio.
La cuestión que entonces surge es, dado un problema, cuál de las dos alternativas,
procesamiento neuronal o convencional, resulta más eficiente en su resolución.
Estudiando en el campo de las redes neuronales los aspectos relacionados con la
complejidad computacional, en varios estudios se deduce que los problemas que
requieren un extenso algoritmo o que precisan almacenar un gran número de datos,
aprovechan mejor la estructura de una red neuronal que aquellos otros que
requieren algoritmos cortos. Así, un ordenador digital resulta más eficiente en la
ejecución de tareas aritméticas y lógicas, mientras que un ANS resolverá mejor
problemas que deban tratar con grandes bases de datos que almacenen ingentes
cantidades de información, y en los que existan muchos casos particulares, como
sucede en los problemas de reconocimiento de patrones en ambiente natural.
De esta manera podemos concluir que un estilo de computación no es mejor que el
otro, simplemente para cada problema particular se deberá elegir el método más
adecuado, y en el caso de problemas muy complejos, éstos deberían ser separados
en partes, para resolver cada una mediante el método más idóneo.[12]
2.9. REALIZACIÓN Y APLICACIONES DE LAS REDES NEURONALES
El modo más habitual de realizar una red neuronal consiste en simularla en un
ordenador convencional, como un PC o una estación de trabajo, haciendo uso de
programas escritos en lenguajes de alto nivel, como C o Pascal. Aunque de esta
manera se pierde su capacidad de cálculo en paralelo, las prestaciones que ofrecen
los ordenadores actuales resultan suficientes para resolver numerosos problemas
prácticos, perm itiendo la simulación de redes de tamaño considerable a una
velocidad razonable. Esta constituye la manera más barata y directa de realizar una
red neuronal. Además, no es necesario que cada diseñador confeccione sus propios
simuladores, pues hay disponible comercialmente software de simulación que
permite el trabajo con multitud de modelos neuronales.
En el resto de las maneras de realizar un ANS se trata de aprovechar, en mayo o
menor medida, su estructura de cálculo paralelo. Un paso adelante en este sentido
consiste en simular la red sobre computadores con capacidad de cálculo paralelo
(sistemas multiprocesador, máquinas vectoriales, masivamente paralelas...). Una
orientación diferente consiste en llevar a cabo la emulación hardware de la red
neuronal, mediante el empleo de sistemas de cálculo expresamente diseñados para
realizar ANS basados, o en microprocesadores de altas prestaciones (RISC DSP...),
o en procesadores especialmente diseñados para el trabajo con redes neuronales.
Estas estructuras se suelen denominar placas aceleradoras neuroemuladores o
neurocomputadores de propósito general. Algunos sistemas de desarrollo de redes
neuronales, además de un software de simulación, incluyen dispositivos de este
tipo, en forma de tarjetas conectables al bus de un PC.
La realización electrónica de redes neuronales es un campo muy activo, abordado
tanto por grupos de investigación universitarios como por empresas de los sectores
de la electrónica e informática. Compañías como Siemens, Philips, Hitachi, AT&T,
IBM o Intel han puesto en marcha desde mediados de los años ochenta programas
de investigación y desarrollo en este campo. Asimismo, se han creado diversas
empresas que tratan de explotar comercialmente (con mejor o peor fortuna) estos
nuevos desarrollos. [12]
Las aplicaciones más habituales de las redes neuronales son las relacionadas con
clasificación, estimación funcional y optimización; en general, el del reconocimiento
de patrones suele considerarse como un denominador común. Se pueden señalar,
entre otras, las siguientes áreas de aplicación de los sistemas neuronales:
reconocimiento del habla, reconocimiento de caracteres, visión, robótica, control,
procesamiento de señal, predicción, economía, defensa, bioingeniería, etc.
Asimismo, se están aplicando ANS para incorporar aprendizaje en los sistemas
borrosos y a la confección de sistemas expertos conexionistas. Un área de intenso
trabajo es el del tratamiento de la información económica, siendo uno de los grupos
punteros el de A.N. Refenes, de la London Businnes School.
Otra de las áreas importantes es la industria. Fujitsu, Kawasaki y Nippon Steel
emplean ANS en el control de procesos industriales, como por ejemplo en plantas
de producción de acero. Siemens aplica redes neuronales y sistemas borrosos en la
fabricación de celulosa en laminadoras y en galvanizadoras. Citróen emplea redes
neuronales en la determinación de la calidad del material utilizado en la confección
de los asientos de los vehículos, Ford en reducción de contaminantes y Renault
para detectar averías en el encendido de los automóviles.4
2.10. REDES NEURONALES SUPERVISADAS
En esta parte del capitulo se trataran los modelos de redes mas populares, así como
sus principales algoritmos, se inicia con los modelos mas sencillos, esto con el fin de
ir introduciendo los conceptos necesarios para describir el perceptron y el algoritmo
denominado backpropagation que servirán de base teórica para la experimentación
hecha en el capitulo 4. No se desarrollaran las redes neuronales no supervisadas
debido a que no son redes diseñadas para la forma en que se predicen series de
tiempo, principal objetivo de este trabajo.
2.10.1. ASOCIADOR LINEAL
Este modelo, mediante una transformación lineal, asocia un conjunto de patrones de
entrada a otros de salida. El asociador lineal consta únicamente de una capa de
neuronas lineales, cuyas entradas las denotamos por x y sus salidas por y, vector
que constituye además la respuesta de la red neuronal.
4
Un índice muy completo de aplicaciones de las RNA se pude encontrar en http://www.ipatlas.com/pub/nap/
Asimismo, denotaremos por W = {w ij} a la matriz de pesos, cada fila de W contiene
los pesos de una neurona wi.
La operación del asociador lineal es simplemente
O bien
Por lo tanto, cada neurona i del asociador lineal lleva a cabo la suma ponderada de
las entradas con sus pesos sinápticos. Es decir esta neurona calcula el potencial
postsináptico por medio de la convencional suma ponderada, cantidad a la que
aplica finalmente una función activación de tipo identidad.
El problema se centra en encontrar la matriz de pesos W óptima en el sentido
descrito anteriormente en este capitulo. Para ello, en el campo de las redes
neuronales normalmente se hace uso de una regla de aprendizaje, que a partir de
las entradas y de las salidas deseadas (en el caso del aprendizaje supervisado),
proporcione el conjunto óptimo de pesos W.5 [12]
5
Algo mas sobre el asociador lineal puede ser consultado en
http://www.comp.nus.edu.sg/~pris/AssociativeMemory/LinearAssociator.html
2.10.1.1. REGLA DE APRENDIZAJE DE HEBB
Uno de los modelos clásicos de aprendizaje de redes neuronales es el propuesto
por Hebb (1949), el cual postulo un mecanismo de aprendizaje para una neurona
biológica, cuya idea básica consiste en que cuando un axón presinaptico causa la
activación de cierta neurona pos-sináptica, la eficacia de la sinapsis que las
relaciona se refuerza.[12]
Si bien este tipo de aprendizaje es simple y local, su importancia radica en que fue
pionero tanto en neurociencias como en neurocomputación, de ahí que otros
algoritmos mas complejos lo tomen como punto de partida.
De manera general se denomina aprendizaje Hebbiano a un aprendizaje que
involucra una modificación en los pesos,
?w ij proporcional al producto de una
entrada xj y de una salida yi de la neurona. Es decir, ?wij = ey ixj, donde a 0<e<1 se
le denomina ritmo de aprendizaje. [12]
Consideremos el caso del asociador lineal. La regla de Hebb se expresa en este
caso particular así
Por lo tanto, el algoritmo de entrenamiento regla de Hebb para el asociador lineal
es:
Si los pesos de partida son nulos, el valor final de W para las p asociaciones será:
2.10.1.2. REGLA DE LA PSEUDOINVERSA
La regla de aprendizaje de Hebb ha sido introducida debido a su plausibilidad
biológica. Sin embargo, en general se tratará de deducir los algoritmos de
aprendizaje a partir de un cierto criterio a optimizar; el aprendizaje usualmente se
planteará como un procedimiento para alcanzar el conjunto de pesos óptimo que
resuelva un problema dado. Para ello se hace necesario definir el significado de
“óptimo” en cada caso concreto, es decir, hay que proponer un criterio que mida el
rendimiento de la red neuronal para encontrar una regla de actualización de pesos
que lo optimice. Una forma habitual de definir el rendimiento es el error cuadrático
medio de las salidas actuales de la red respecto de las deseadas. Para el asociador
lineal se tendría
De este modo, un algoritmo de aprendizaje para el asociador lineal debería obtener
un conjunto de pesos que minimicen esta expresión del error. Si denominamos X a
una matriz nxp que tiene por columnas los vectores de entrada xU, X = (x1, x2,…,x p)
y si llamamos Y a la matriz mxp cuyas columnas son los vectores de salida yU , Y =
(y1, y2,…,yp), la ecuación anterior se transforma en
Con esta nomenclatura, la regla de Hebb se expresa de la forma siguiente:
Una regla de aprendizaje basada en la utilización de la matriz pseudoinversa puede
escribirse como:
Donde X+ denota la pseudoinversa de X. Debido a que ambas reglas son óptimas
según el mismo criterio, la regla de Hebb y la de la pseudoinversa deben estar muy
relacionadas. Esta circunstancia es fácil de apreciar, pues si consideramos un
conjunto de vectores de entrada ortonormales, la regla de la pseudoinversa se
convierte en la de Hebb. Por otra parte, si se realiza la expansión en serie de la
ecuación de la pseudoinversa, el primer término de la serie es Precisamente la
ecuación de la regla de Hebb. Es decir, la regla de Hebb representa en el fondo un
caso particular de la más general regla de la pseudoinversa. [12]
2.10.2. PERCEPTRON SIMPLE
La red tipo Perceptrón fue inventada por el psicólogo Frank Rosenblatt en el año
1957. Su intención era ilustrar algunas propiedades fundamentales de los sistemas
inteligentes en general, sin entrar en mayores detalles con respecto a condiciones
específicas y desconocidas para organismos biológicos concretos. Rosenblatt creía
que la conectividad existente en las redes biológicas tiene un elevado porcentaje de
aleatoriedad, por lo que se oponía al análisis de McCulloch Pitts en el cual se
empleaba lógica simbólica para analizar estructuras bastante idealizadas.
Rosenblatt opinaba que la herramienta de análisis más apropiada era la teoría de
probabilidades, y esto lo llevó a una teoría de separabilidad estadística que utilizaba
para caracterizar las propiedades más visibles de estas redes de interconexión
ligeramente aleatorias.
El primer modelo de Perceptrón fue desarrollado en un ambiente biológico imitando
el funcionamiento del ojo humano, el fotoperceptrón como se le llamo era un
dispositivo que respondía a señales ópticas; como se muestra en el figura 2.9 la luz
incide en los puntos sensibles (S) de la estructura de la retina, cada punto S
responde en forma todo-nada a la luz entrante, los impulsos generados por los
puntos S se transmiten a las unidades de asociación (A) de la capa de asociación;
cada unidad A está conectada a un conjunto aleatorio de puntos S, denominados
conjunto fuente de la unidad A, y las conexiones pueden ser tanto excitatorias como
inhibitorias. [13]
Figura 2.9: Modelo del Fotoperceptrón de Rosenblatt
De forma similar, las unidades A están conectadas a unidades de respuesta (R)
dentro de la capa de respuesta y la conectividad vuelve a ser aleatorio entre capas,
pero se añaden conexiones inhibitorias de realimentación procedentes de la capa de
respuesta y que llegan a la capa de asociación, también hay conexiones inhibitorias
entre las unidades R.
Figura 2.10 : Arquitectura (izquierda) y función de transferencia (derecha) de un perceptrón simple
El perceptrón simple es un modelo unidireccional, compuesto por dos capas de
neuronas, una sensorial o de entradas, y otra de salida (Figura 2.10). La operación
de una red de este tipo, con n neuronas de entrada y m de salida, se puede
expresar como [12]
Las neuronas de entrada no realizan ningún cómputo, únicamente envían la
información (en principio consideraremos señales discretas {O, +1)) a las neuronas
de salida (en el modelo original estas neuronas de entrada representaban
información ya procesada, no datos directamente procedentes del exterior).
La función de desempeño las neuronas de la capa de salida es de tipo escalón. Así,
la operación de un perceptrón simple puede escribirse
con H(.) la función de Heaviside o escalón. El perceptrón puede utilizarse tanto
como clasificador, como para la representación de funciones booleanas, pues su
neurona es esencialmente de tipo MacCulloch-Pitts, de salida binaria. La
importancia teórica del perceptrón radica en su carácter de dispositivo entrenable,
pues el algoritmo de aprendizaje del modelo introducido por Rosenblatt, y que se
describirá mas adelante, permite determinar automáticamente los pesos sinápticos
que clasifican conjunto de patrones a partir de un conjunto de ejemplos etiquetados.
[12]
Se mostrara a continuación que un perceptrón permite realizar tareas de
clasificación. Cada neurona del perceptrón representa una determinada clase, de
modo que dado un vector de entrada, una cierta neurona responde con 0 si no
pertenece a la se que representa, y con un 1 si sí pertenece. Es fácil ver que una
neurona tipo perceptrón solamente permite discriminar entre dos clases linealmente
separables (es decir, cuyas regiones de decisión pueden ser separadas mediante
una única condición lineal o hiperplano Sea una neurona tipo perceptrón de dos
entradas, x1 y x2 con salida y, cuya operación se define por lo tanto
o bien
Si consideramos x y x situadas sobre los ejes de abscisas y ordenadas en el plano,
la condición
representa una recta (hiperplano, si trabajamos con n entradas) que divide el plano
(espacio) en dos regiones, aquellas para las que la neurona proporciona una salida
0 o 1, respectivamente (Figura 2.11). Luego, efectivamente, una neurona tipo
perceptrón representa un discriminador lineal, al implementar una condición lineal
que separa dos regiones en el espacio, que representan dos diferentes clases de
patrones.
Figura 2.11: Región de decisión correspondiente a un perceptrón simple con dos neuronas
de entrada
Consideremos la función lógica NAND, (AND negada de dos entradas), que
representamos sobre el plano (Figura 2.12a). En este caso pueden encontrarse
unos parámetros w 1 y w2 y ? que determinen una recta que separa perfectamente
las regiones correspondientes a los valores lógicos 0 y 1. Por ello, la función lógica
NAND se dice separable linealmente, puesto que hemos podido encontrar una única
condición lineal que divida ambas regiones Por ejemplo, un perceptrón con los
siguientes parámetros implementa la función NAND: w 1 = w 2 = -2 y ? = -3
Figura 2.12: Funciones lógicas NAND (a) y XOR (b)
Sin embargo consideremos la función lógica or - exclusivo o XOR (su salida es el 0
lógico si las variables de entrada son iguales y 1 si son diferentes), se representa en
el plano (Figura 2.12b).
En este caso podemos apreciar que no se puede encontrar una única condición
lineal que separe las regiones a los valores de salida O y 1, por lo que se dice que la
XOR no es linealmente separable. Como la neurona del perceptron representa en el
fondo un discriminador lineal, esta neurona por sí sola no puede implementar la
función XOR.
Por lo tanto, concluimos con que la clase de funciones no separables linealmente no
puede ser representada por un perceptrón simple. [12]
Minsky (uno de los padres de la IA) y Papert estudiaron en profundidad el
perceptrón, y en 1969 publicaron un exhaustivo trabajo en el que se subrayaba sus
limitaciones, lo que resultó decisivo para que muchos de los recursos que se
estaban invirtiendo en redes neuronales se desviasen hacia otros campos más
prometedores entonces, como era en la época el de la inteligencia artificial. A finales
de los sesenta ya se apuntaba como solución a las limitaciones del perceptrón
introducir capas ocultas, pero el problema residía en que si bien se disponía de un
algoritmo de aprendizaje para el perceptrón simple, el denominado algoritmo del
perceptrón (se explicara el algoritmo en la siguiente sección), no se disponía de
ningún procedimiento que permitiese obtener automáticamente los pesos en uno
multicapa, con neuronas ocultas.
Este problema denominado de ‘asignación de crédito” a las neuronas sin conexión
directa con el exterior (consistente en cómo medir la contribución al error en la
salida de la red neuronal de cada uno de los nodos ocultos que precisamente no
tienen una conexión directa con ella) fue resuelto no mucho más tarde por Paul
Werbos, pero fue preciso esperar hasta mediados de los años ochenta para que el
grupo PDP junto con otros grupos de forma independiente) redescubriera un
algoritmo similar que denominaron back-propagation o BP, y diera a conocer a la
comunidad internacional su gran potencial para la resolución de problemas
prácticos.[12]
2.10.2.1. ALGORITMO DE APRENDIZAJE DEL PERCEPTRON
La importancia del perceptrón radica en su carácter de dispositivo entrenable pues
el algoritmo de aprendizaje introducido por Rosenblatt permite que el perceptrón
determine automáticamente los pesos sinápticos que clasifican un determinado
conjunto de patrones etiquetados. El del perceptrón es un algoritmo de aprendizaje
de los denominados por corrección de errores. Los algoritmos de este tipo (en el
que se incluyen posteriormente también el de la adaline y el BP) ajustan los pesos
en proporción a la diferencia existente entre la salida actual de la red y la salida
deseada, con el objetivo de minimizar el error actual de la red.
Sea un conjunto de p patrones xU , u.=1,…,p, con sus salidas deseadas tU . Tanto las
entradas como las salidas solamente pueden tomar los valores -1 o 1 (o bien, 0 o 1,
según se definan los niveles lógicos). Se tiene una arquitectura de perceptrón
simple, con pesos iniciales aleatorios, y se requiere que clasifique correctamente
todos los patrones del conjunto de aprendizaje (lo cual es posible solamente si son
linealmente separables).
Se decidirá del siguiente modo, ante la presentación del patrón u-ésimo, si la
respuesta que proporciona el perceptrón es correcta, no se actualizaran los pesos;
si es incorrecta, según la regla de Hebb de la sección 2.9.1.1. Se tiene
que se puede reescribir del siguiente modo
que es la forma habitual de expresar la regla del perceptrón. En su utilización
práctica, se debe llegar a un compromiso para el valor del ritmo de aprendizaje ? ,
puesto que un valor pequeño implica un aprendizaje lento, mientras que uno
excesivamente grande puede conducir a oscilaciones en el entrenamiento, al
introducir variaciones en los pesos excesivamente amplias. Al ser las entradas y las
salidas discretas {-1, ÷1}, también lo será la actualización de los pesos, que
únicamente podrá tomar los valores 0 o ±2? .
2.10.3. ADALINE
Al mismo tiempo que Frank Rosenblatt trabajaba en el modelo del Perceptrón
Bernard Widrow y su estudiante Marcian
do introdujeron el modelo de la red
Adaline y su regla de aprendizaje llamada algoritmo LMS (Least Mean Square). El
término Adaline es una sigla, sin embargo su significado cambió ligeramente a
finales de los años sesenta cuando decayó el estudio de las redes neuronales,
inicialmente se llamaba Adaptive Linear Neuron (Neurona Lineal Adaptiva), para
pasar después a ser Adaptive Linear Element (Elemento Lineal
doptivo), este
cambio se debió a que la Adaline es un dispositivo que consta de un único elemento
de procesamiento, como tal no es técnicamente una red neuronal. La estructura
general de la red tipo Adaline puede visualizarse en la figura 2.13. [17]
A diferencia del asociador lineal, la adaline incorpora un parámetro adicional
denominado bias, el cual no debe de ser considerado como un umbral de disparo,
sino como un parámetro que proporciona un grado de libertad adicional al modelo.
Teniendo en cuenta lo anterior, la ecuación de la adaline resulta ser:
con i = 1, …,m.
Otra diferencia fundamental de la adaline con respecto del asociador lineal y el
perceptrón simple radica en la regla de aprendizaje. En la adaline se utiliza la regla
de Widrow – Holf, también conocida como LMS (Least Mean Square) o regla de
mínimos cuadrados. Esta regla permite actualizaciones de los pesos proporcionales
al error cometido por la neurona.
El adaline se viene utilizando desde comienzos de los años sesenta como filtro
adaptativo, por ejemplo en aplicaciones relacionadas con la reducción del ruido en
la transmisión de señales. De este modo, y desde hace años, millones de módems
de todo el mundo incluyen una adaline.
2.10.4. EL PERCEPTRON MULTICAPA (MLP)6
En la sección 2.10.2 se ha visto las limitaciones del perceptrón simple, ya que con él
tan solo se puede discriminar patrones que pueden ser separados por un hiperplano
(una recta en el caso de dos neuronas de entrada). Una manera de solventar estas
limitaciones del perceptrón simple es por medio de la inclusión de capas ocultas,
obteniendo de esta forma una red neuronal que se denomina perceptrón multicapa.
La Figura 2.14 muestra las regiones de decisión que se obtienen para distintas
arquitecturas de redes neuronales considerando dos neuronas en la capa inicial. Así
por ejemplo para una arquitectura de perceptrón simple la región de decisión es una
recta, mientras que el perceptrón multicapa con una única capa de neuronas ocultas
puede discriminar regiones convexas.
Por otra parte el perceptrón multicapa con dos capas de neuronas ocultas es capaz
de discriminar regiones de forma arbitraria.
6
Esta red será el tipo de red central en este trabajo
Figura 2.14: Regiones de decisión obtenida s para el perceptrón simple (arriba), el perceptrón
multicapa con una capa oculta (en medio) y el perceptrón multicapa con dos capas ocultas (abajo)
La estructura del MLP con una única capa oculta se muestra en las Figuras 2.15 y
2.16.
Figura 2.15: Arquitectura (izquierda) y función de desempeño(derecha) para el perceptrón multicapa
Denominaremos xi a las entradas de la red, yj a las salidas de la capa oculta y Zk a
las de la capa final (y globales de la red); tk serán las salidas objetivo (target). Por
otro lado, wij son los pesos de la capa oculta y ?j sus umbrales, w’kj los pesos de la
capa de salida y ?k sus umbrales. La operación de un MLP con una capa oculta y
neuronas de salida lineal (estructura que constituye, como se vera más adelante, un
aproximador universal de funciones) se expresa matemáticamente de la siguiente
manera:
Ésta es la arquitectura más común de MLP, aunque existen numerosas variantes,
como incluir neuronas no lineales en la capa de salida (solución que se adopta
especialmente en problemas de clasificación), introducir más capas ocultas, emplear
otras funciones de activación, limitar el número de conexiones entre una neurona y
las de la capa siguiente, introducir dependencias temporales o arquitecturas
recurrentes, etc.
Figura 2.16: Arquitectura del perceptrón multicapa
2.10.4.1. EL MLP COMO APROXIMADOR UNIVERSAL DE FUNCIONES
El desarrollo del MLP durante los últimos treinta años ha resultado curioso.
Partiendo
de
un
perceptrón
monocapa
y
observando
sus
limitaciones
computacionales, se llegó a la arquitectura perceptrón multicapa, y aplicándolo a
numerosos problemas, se comprobó experimentalmente que éste era capaz de
representar complejos, mappings y de abordar problemas de clasificación de gran
envergadura, de una manera eficaz y relativamente simple. Sin embargo, faltaba
una demostración teórica que permitiese explicar sus aparentemente enormes
capacidades computacionales.
Este proceso histórico comienza con McCulloch y Pitts, quienes mostraron que
mediante su modelo de neurona (esencialmente un dispositivo de umbral) podría
representarse cualquier función booleana; mucho más tarde, Denker y otros,
demostraron que toda función booleana podía ser representada por una red
unidireccional multicapa de una sola capa oculta. Por las mismas fechas, Lippmann
mostró que un perceptrón con dos capas ocultas bastaba para representar regiones
de decisión arbitrariamente complejas. Por otra parte, Lapedes y Farber
demostraron que un perceptrón de dos capas ocultas es suficiente para representar
cualquier función arbitraria (no necesariamente booleana).
Más tarde, Hecht-Nielsen aplicando el teorema de Kolmogorov demostró que una
arquitectura de características similares al MLP, con una única capa oculta,
resultaba ser un aproximador universal de funciones. Por fin, a finales de la década,
diversos grupos propusieron casi a la par teoremas muy similares que demostraban
matemáticamente que un MLP convencional, de una única capa oculta, constituía,
en efecto, un aproximador universal de funciones.
Los teoremas citados resultan de vital importancia, puesto que proporcionan una
sólida base teórica al campo de las redes neuronales, al incidir sobre un aspecto (la
aproximación funcional y un modelo (el MLP) centrales en la teoría de las redes
neuronales artificiales. No obstante, todavía quedan muchos asuntos abiertos. Por
ejemplo estos teoremas no informan sobre el número de nodos ocultos necesarios
para aproximar una función determinada, simplemente se afirma que hay que
colocar los necesarios para lograr el nivel de aproximación requerido.
2.10.4.2. APRENDIZAJE POR RETROPROPAGACIÓN DE ERRORES
Una solución al problema de entrenar los nodos de las capas ocultas pertenecientes
a arquitecturas multicapa la proporciona el algoritmo de retropropagación de errores
o BP (backpropagation).
Sea un MLP de tres capas, cuya arquitectura se presenta en la Figura 2.16, con
[entradas, salidas, pesos y umbrales de las neuronas definidas en la introducción de
la sección 2.9.4. Dado un patrón de entrada xu, (u=1,…,p), se recuerda que la
operación global de esta arquitectura se expresa del siguiente modo:
Las funciones de activación de las neuronas ocultas f (h) son de tipo sigmoideo, con
h el potencial postsináptico o local. La función de costo de la que se parte es el error
cuadrático medio
La minimización se lleva a cabo mediante descenso por el gradiente, pero en esta
ocasión habrá un gradiente respecto de los pesos de la capa de salida y otro
respecto de los de la oculta:
Las expresiones de actualización de los pesos se obtienen sólo con derivar,
teniendo en cuenta las dependencias funcionales y aplicando adecuadamente la
regla de la cadena
La actualización de los umbrales (bias) se realiza haciendo uso de estas mismas
expresiones, considerando que el umbral es un caso particular de peso sináptico,
cuya entrada es una constante igual a -1.
En estas expresiones está implícito el concepto de propagación hacia atrás de los
errores que da nombre al algoritmo. En primer lugar se calcula la expresión
.
que denominaremos señal de error, por s0er proporcional al error de la salida
actual de la red, con el que calculamos la actualización
de los pesos de la capa
de salida. A continuación se propagan hacia atrás los errores
a través de las sinapsis, proporcionando así las señales de error , correspondientes
a las sinapsis de la capa oculta; con éstas se calcula la actualización de las sinapsis
ocultas. El algoritmo puede extenderse fácilmente a arquitecturas con más de una
capa oculta siguiendo el mismo esquema.
En resumen, el procedimiento a seguir para entrenar mediante BP una arquitectura
MLP dada es el siguiente:
Se debe comenzar siempre con pesos iniciales aleatorios (normalmente números
pequeños, positivos y negativos), ya que si se parte de pesos y umbrales iniciales
son nulos el aprendizaje no progresará (puesto que las salidas de las neuronas y el
incremento en los pesos serán siempre serán nulos).
En el esquema presentado, que surge de forma natural del proceso de descenso
por el gradiente, se lleva a cabo una fase de ejecución para todos y cada uno de los
patrones del conjunto de entrenamiento, se calcula la variación en los pesos debida
a cada patrón, se acumulan, y solamente entonces se procede a la actualización de
los pesos. Este esquema se suele denominar aprendizaje por lotes (batch).
Una variación común al algoritmo consiste en actualizar los pesos sinápticos tras la
presentación de cada patrón (en vez de presentarlos todos y luego actualizar),
esquema denominado aprendizaje en serie (on - line). Aunque el verdadero BP es el
que se ejecuta por lotes, el aprendizaje en serie es habitualmente empleado en
aquellos problemas en los que se dispone de un muy numeroso conjunto de
patrones de entrenamiento (compuesto por cientos o miles de patrones), en el que
habrá mucha redundancia en los datos. Si se emplease en este caso el modo por
lotes, el tener que procesar todos los patrones antes de actualizar los pesos
demoraría
considerablemente
el
entrenamiento
(además
de
precisar
el
almacenamiento de numerosos resultados parciales). Por ejemplo, podemos
imaginar un conjunto de entrenamiento compuesto por 10.000 patrones, en el que
cada patrón aparece repetido cien veces, entrenando por lotes el aprendizaje
duraría cien veces más que en modo serie.
En el aprendizaje en serie se debe tener presente que el orden en la presentación
de los patrones debe ser aleatorio, puesto que si siempre se siguiese un mismo
orden el entrenamiento estaría viciado en favor del último patrón del conjunto de
entrenamiento, cuya actualización, por ser la última, siempre predominaría sobre las
anteriores. Además, esta aleatoriedad presenta una importante ventaja, puesto que
puede permitir escapar de mínimos locales en determinadas ocasiones, por lo que
al final del proceso puede alcanzarse un mínimo más profundo.
EL BP tiene como ventaja principal es que se puede aplicar a multitud de problemas
diferentes, proporcionando con frecuencia buenas soluciones con no demasiado
tiempo de desarrollo. No obstante, si se requiere una solución realmente excelente,
habrá que dedicar más tiempo al desarrollo del sistema neuronal, teniendo en
cuenta diferentes cuestiones adicionales.
Como desventaja se encuentra, entre otras, su lentitud de convergencia, uno los
precios que hay que pagar por disponer de un método general de ajuste funcional
que no requiere (en principio) información apriorística.
Sin embargo, se debe tener cuenta que el BP no requiere tanto esfuerzo
computacional como el que sería necesario si se tratasen de obtener los pesos de la
red mediante la evaluación directa de las derivadas; en ese sentido se ha
comparado el BP con la transformada rápida Fourier, que permite calcular la
transformada de Fourier con un muy inferior esfuerzo computac ional. Otro problema
del BP es que puede incurrir en el denominado sobreaprendizaje (o sobreajuste),
fenómeno directamente relacionado con la capacidad de generalización de la red a
partir de los ejemplos presentados. Por otra parte, debe tenerse en cuenta que el
algoritmo BP no garantiza alcanzar el mínimo global de la función error, sólo un
mínimo local, por lo que el proceso de aprendizaje puede quedarse estancado en
uno de estos mínimos locales. 7 [12]
2.11. CAPACIDAD DE GENERALIZACIÓN DE LA RED
Uno de los aspectos fundamentales de los ANS es su capacidad de generalizar a
partir de ejemplos, lo que constituye el problema de la memorización frente a
generalización. Por generalización se entiende la capacidad de la red de dar una
respuesta correcta ante patrones que no han sido empleados en su entrenamiento.
Una red neuronal correctamente entrenada generalizará, lo que significa que ha
7
Mas información sobre pequeñas variaciones al algoritmo de backpropagation en la dirección
http://www.iti.upv.es/~fcn/students/rna/Index.html
aprendido adecuadamente el mapping no sólo los ejemplos concretos presentados,
por lo que responderá correctamente ante patrones nunca vistos con anterioridad.
[12]
2.11.1. VALIDACIÓN CRUZADA (CROSS-VALIDATION)
En un proceso de entrenamiento se debe considerar, por una parte, un error de
aprendizaje, que se suele calcular como el error cuadrático medio de los resultados
proporcionados por la red para el conjunto de patrones de aprendizaje. Con una red
suficientemente grande, puede reducirse tanto como se quiera sólo con llevar a
cabo más iteraciones. Por otra parte, existe un error de generalización, que se
puede medir empleando un conjunto representativo de patrones diferentes a los
utilizados en el entrenamiento. De esta manera, podemos entrenar una red neuronal
haciendo uso de un conjunto de aprendizaje, y comprobar su eficiencia real, o error
de generalización, mediante un conjunto de test.
Un hecho experimental, fácilmente observable con cualquier simulador, es que si se
entrena una red hasta alcanzar un muy pequeño error en aprendizaje (por ejemplo,
inferior a un 1%), la eficacia real del sistema o generalización (medido como error en
test) se degrada.
Si representamos a la vez el error en aprendizaje y el error en test durante el
transcurso del aprendizaje, se obtiene una gráfica como la representada en la
Figura 2.17 (izquierda): tras una fase inicial, en la que pueden aparecer oscilaciones
en el valor del error, el de aprendizaje tiende a disminuir monótonamente, mientras
que el error de generalización a partir de cierto punto comienza a incrementarse, lo
que indica una degradación progresiva del aprendizaje.
Figura 2.17: Evolución del error de aprendizaje y del error de generalización. A la
izquierda, situación idealizada, a la derecha situación real
La explicación de este fenómeno es la siguiente. Al principio la red se adapta
progresivamente al conjunto de aprendizaje, acomodándose al problema y
mejorando la generalización. Sin embargo, en un momento dado el sistema se
ajusta demasiado a las particularidades de los patrones empleados en el
entrenamiento, aprendiendo incluso el ruido en ellos presente, por lo que crece el
error que comete ante patrones diferentes a los empleados en el entrenamiento
(error de generalización). En este momento la red no ajusta correctamente el
mapping, sino que simplemente está memorizando los patrones del conjunto de
aprendizaje, lo que técnicamente se denomina sobreaprendizaje o sobreajuste
(overtraíning o overfitting), pues la red está aprendiendo demasiado (incluso el ruido
presente en los patrones-ejemplo). Idealmente, dada una arquitectura de red
neuronal, ésta debería entrenarse hasta un Punto óptimo (Figura 2.17, izquierda) en
el que el error de generalización es mínimo. El procedimiento consistente en
entrenar y validar a la vez para detenerse en el punto optimo se denomina
validación cruzada (cross validation), y es ampliamente utilizado en la fase de
desarrollo de una red neurona! supervisada (como el MLP).
No obstante, la situación descrita ha sido en cierta medida idealizada; una situación
más realista sería la de la parte derecha de la Figura 2.17: en realidad pueden
presentarse varios mínimos para el conjunto de test, debiendo detener el
aprendizaje en el punto óptimo de mínimo error de generalización, y no quedarnos
en el primer mínimo en test que aparezca.
Muchas veces basta con dejar que el aprendizaje discurra hasta una cota razonable
de error (0.5%, 0.1%, 0.01%..., depende el problema), guardando periódicamente
las distintas configuraciones intermedias de pesos para luego quedarnos con la que
proporcionó un error en test mínimo.
La clave de este asunto está en que las redes neuronales son estimadores no
lineales poderosos, capaces de modelar situaciones muy complejas. En las
herramientas lineales (por ejemplo, en ajuste mediante polinomios) la complejidad
del modelo viene dada simplemente por el número de parámetros libres a ajustar
(coeficientes), mientras que en los sistemas no lineales (como son las redes
neuronales), la complejidad del modelo depende tanto del número de parámetros
como de su valor actual. Los modelos que implementan las redes neuronales son de
elevada complejidad, por lo que pueden aprender (memorizar) casi cualquier cosa,
motivo por el cual incurren fácilmente en sobreaprendizaje.
Cuando se entrena una red unidireccional supervisada debe tenerse muy en cuenta
el tema del sobreaprendizaje, y la técnica de validación cruzada suele ser un buen
remedio (aunque, como se vera a continuación, no es el único disponible);
usualmente, de todo el conjunto de entrenamiento se emplea aproximadamente un
80% de los patrones para entrenar, reservándose un 20% como conjunto de test.
[12]
2.11.2. NÚMERO DE EJEMPLOS DE ENTRENAMIENTO
En definitiva, la capacidad de generalización de la red la determinan en buena
medida las siguientes tres circunstancias: 1) la arquitectura de la red, 2) el número
de ejemplos de entrenamiento y 3) la complejidad del problema. Los tres puntos
están muy relacionados; en términos generales, cuanto más complejo sea el
problema a modelar más grande deberá ser la red (con más parámetros a ajustar) y,
por lo tanto, más ejemplos se necesitarán para entrenarla (ejemplos que deberán
cubrir todo el espacio de entrada, contemplando todas las situaciones posibles).
A menudo el número de patrones -ejemplo disponibles es limitado (y reducido), y en
proporción el número de parámetros efectivos de la red elegida (grados de libertad)
suele ser muy grande. Así, si se quiere que la red alcance un error de
generalización de, por ejemplo,
? = 0.1 (un 10%), el número de patrones de
aprendizaje necesarios p será del orden de p = 10w, expresión que se suele dar
como indicativa del número aproximado de patrones que serán necesarios para
entrenar adecuadamente una red neurona! de w pesos.
Por ejemplo para una red 10-5-1 (10 neuronas de entrada, 5 ocultas y 1 de salida.),
que dispone de 61 parámetros, entre pesos y umbrales, el número de patrones
necesarios para alcanzar un error de! 10% será de unos 610, lo que representa una
cifra de patrones muy alta, no disponible en muchas aplicaciones prácticas. Ello
ilustra de nuevo la facilidad de incurrir en sobreaprendizaje al entrenar una red
neuronal.
2.11.3. REDUCCIÓN DEL TAMAÑO DE LA ARQUITECTURA DE UNA RED
Además, hay que tener presente la llamada maldición de la dimensionalidad (curse
of dimensionality) que consiste en que el número de datos necesarios para
especificar un mapping, en general crece exponencialmente con la dimensión del
espacio de entrada, lo que agrava en los problemas de dimensión de entrada
elevada es el de disponer de un número de patrones para el aprendizaje escaso.
Disminuyendo el número de parámetros de la red (tamaño) se tendrá una relación p
= w/? más favorable. Una forma de reducirlo consiste en limitar el número de las
entradas de la red, pues ello implica la disminución drástica del número de pesos.
Por ejemplo, una red con 200 entradas, 100 neuronas ocultas y 3 salidas, contendrá
del orden de 20.000 pesos, con lo que se necesitarían unos 200.000 patrones para
entrenarla adecuadamente. Si reducimos el número de entradas a 10 (por ejemplo,
realizando un análisis de componentes principales a las variables de entrada,
empleando ratios, etc.), el número de pesos se reduce a 143, con lo que se
precisarían únicamente unos 1400 patrones de aprendizaje.
Otras técnicas empleadas en la reducción del número de parámetros de la red se
relacionan con eliminar algunos de sus pesos; algunas bien conocidas son las de
compartir pesos (weight sharing), podado de la red (pruning) o decaimiento de
pesos (weight decay).
En la primera de las citadas, diversas neuronas comparten sus pesos, de modo que
el número total disminuye. En el proceso de podado la red es entrenada hasta un
cierto nivel, para luego eliminar aquellos pesos que no aportan prácticamente nada
a su operación. El decaimiento es un caso especial del podado; durante el
aprendizaje se deja a los pesos tender poco a poco a cero, para que aquellos que
no sean actualizados periódicamente, se anulen y desaparezcan. [12]
3. MATLAB TOOLBOX
3.1. INTRODUCCIÓN
El objetivo de este capítulo es explicar el uso del toolbox de matlab para entrenar
redes neuronales con el algoritmo backpropagation de tipo feedforward, para
resolver problemas específicos. Generalmente se tienen cuatro pasos en el proceso
de dicho entrenamiento:
1.
2.
3.
4.
Configurar los datos de entrenamiento
Crear la red
Entrenar la red
Simular la respuesta de la red con nuevas entradas
Este capítulo se muestran varias de las funciones de entrenamiento, y para cada
función se deben seguir estos cuatro pasos.
3.2. BACKPROPAGATION
La arquitectura de la red que normalmente es la más usada con el algoritmo del
backpropagation es feedforward de múltiples capas (multilayer).
Una neurona elemental con R entradas se muestra en el grafico 3.1. Cada entrada
es pesada con su w correspondiente. La suma de las entradas y sus pesos forman
la entrada de a la función de transferencia f. las Neuronas pueden usar diferentes
funciones de transferencia f para generar una salida.
Figura 3.1
En una red de múltiples capas (multilayer) a menudo se usa el log-sigmoid o función
de transferencia logarítmica (Figura 3.2).
Figura 3.2
La función logarítmica genera salidas entre 0 y 1 y la entrada de la neurona puede
ir desde infinitamente negativo a infinitamente positivo.
Alternativamente, las redes multicapa pueden usar el tan-sigmoid o función de
transferencia tangencial. (Figura 3.3)
Figura 3.3
De vez en cuando, el purelin o función de traslado lineal se usa en redes
backpropagation. (Figura 3.4)
Figura 3.4
Si la última capa de una red multicapa tiene neuronas sigmoideas
(-sigmoid),
entonces se escalan las salidas de la red en un rango pequeño. Si se usan
neuronas de salida lineal, las salidas de la red pueden tomar cualquier valor.
En backpropagation es importante poder calcular el derivado de cualquier función de
transferencia utilizada. Cada una de las funciones anteriores, tangencial,
logarítmica, y purelin, tienen una función derivativa que les corresponde: dtansig,
dlogsig, y dpurelin. Para obtener el nombre de la función derivativa asociada a cada
función de transferencia se debe llamar la función de transferencia y la función de
matlab 'deriv'.
Ejemplo:
•
tansig('deriv')
•
ans = dtansig
Las tres funciones de transferencia descritas anteriormente son las usadas
normalmente para backpropagation, pero pueden crearse otras funciones diferentes
y usarse con backpropagation si así se desea.
3.3. RED FEEDFORWARD
Una red neuronal de una capa con S neuronas logsig y con R entradas se muestra
en la figura 3.5, se encuentra de forma general en el lado izquierdo y en el lado
derecho un diagrama especifico de la capa.
Figura 3.5
Una red Feedforward a menudo tiene una o más capas ocultas de neuronas de tipo
sigmoideas, seguidas por una capa de salida lineal. Las capas múltiples de
neuronas con funciones de transferencia no lineal permiten a la red aprender
relaciones lineales y no lineales entre la entrada y la salida. La capa del de salida
lineal permite a la red producir el umbral fuera del rango entre -1 y +1.
Por otro lado, si se quiere reprimir las salidas de una red (entre 0 y 1), entonces la
capa de salida debe usar una función de transferencia sigmoidea (como logsig).
Para las redes de múltiples capas se acostumbra que el número de las capas
determine el exponente en la matriz de pesos.
Figura 3.6
Esta red puede usarse como un aproximador de una función en general. Puede
aproximar
cualquier
función
con
un
número
finito
de
discontinuidades
arbitrariamente bien, con la cantidad adecuada de neuronas en la capa oculta.
3.4. CREANDO UNA RED (newff)
El primer paso de entrenamiento de una red feedforward es crear la red. La función
newff
crea una red feedforward. Esta función requiere cuatro parámetros de
entrada. La primera es un R que consta de una matriz del mínimo y máximo valor
para cada uno de los elementos de R en el vector de entrada. La segunda entrada
es un arreglo que contiene los tamaños de cada capa (la cantidad de neuronas por
capa). La tercera entrada es un arreglo que contiene los nombres de las funciones
de entrenamiento que serán usadas en cada capa. La última contiene el nombre de
la función de entrenamiento que se usara.
Por ejemplo, lo siguiente crea una red de la dos capas. Hay un vector de la entrada
con dos elementos. Los valores para el primer elemento del vector de entrada son 1 y 2, los valores del segundo elemento del vector de entrada son 0 y 5. Hay tres
neuronas en la primera capa y una neurona en la segunda capa (capa de salida).
La función de transferencia en la primera capa es tan-sigmoid, y en la capa de
salida la función de transferencia es lineal. La función de entrenamiento es traingd
(qué se describirá mas adelante).
•
net=newff([-1 2; 0 5],[3,1],{'tansig','purelin'},'traingd');
Esta orden crea la red y también inicializa los pesos y el umbral de la red; por
consiguiente la red está lista para ser entrenada.
Inicializando pesos (init). Antes de entrenar una red feedforward, los pesos y el
umbral debe inicializarse. El método newff inicializará los pesos automáticamente,
pero si se quieren reinicializar, esto puede hacerse con init. Esta función toma una
red como entrada y reestablece
todos los pesos y el umbral e la red. Así es
inicializa una red (o reinicializada):
•
net = init(net);
3.5. SIMULACIÓN (sim)
La función sim simula una red. sim toma la entrada de la red p, y la red como tal, y
esta retorna las salidas de la red. Así se puede simular la red que se creo
anteriormente para un solo vector de la entrada:
•
p = [1;2];
•
a = sim(net,p)
•
a = -0.1011
(Si prueba estos datos, su resultado puede ser diferente, dependiendo del estado
del generador de números aleatorios que tenga cuando la red fue inicializada.).
3.6. ENTRENAMIENTO
Una vez se han inicializado los pesos de la red y los el umbral, la red está lista para
ser entrenada. La red puede entrenarse para: la aproximación de una función
(regresión no lineal), la asociación del modelo, o la clasificación del modelo. El
proceso de entrenamiento requiere de los patrones de conducta apropiados para la
red, las entradas de la red p y las salidas en blanco t. Durante el entrenamiento los
pesos y el umbral de la red son iterativamente ajustados para minimizar la función
de desempeño de la red net.performFcn. La función de desempeño predefinida
para las redes feedforward es mse,
el promedio cuadrado del error entre los
rendimientos de la red y los rendimientos designados t.
Todos los algoritmos usan la función de desempeño para determinar cómo ajustar
los pesos y minimizar performance.
Hay dos maneras diferentes en las que este algoritmo de descenso de gradiente
puede llevarse a cabo: modo incremental y modo del lote. En el modo de
incremental, el gradiente se computa y los pesos se actualizan después de cada
entrada que se aplica a la red. En el modo del lote todas las entradas se aplican a la
red antes que los pesos se actualicen. A continuación se describe el modo de
entrenamiento por lote.
3.6.1. ENTRENAMIENTO POR LOTE (train)
En modo por lote se actualizan sólo los pesos y el umbral de la red después que el
juego de entrenamiento entero se ha aplicado a la red. Se suman los gradientes
calculados en cada ejemplo de entrenamiento para determinar el cambio en los
pesos y el umbral.
3.6.2. ENTRENAMIENTO POR INCREMENTAL (traingd)
El entrenamiento de disminución de gradiente o por pasos se ejecuta con la función
traingd. En la que se actualizan los pesos y el umbral en dirección negativa del
gradiente de la función de desempeño . Si se quiere entrenar una red que use
incremental por pasos de lote, se debe anteponer trainFcn al traingd, y entonces
llama al entrenamiento de la función.
Hay siete parámetros de entrenamiento asociados con traingd: epochs, show , goal,
time, min_grad, max_fail, y lr. El lr da la proporción de aprendizaje se obtiene
multiplicando tiempos por negativo de el gradiente para determinar los cambios a
los pesos y el umbral. Si la proporción de aprendizaje se hace demasiado grande, el
algoritmo se vuelve inestable. Si la proporción de aprendizaje se fija demasiado
pequeña, el algoritmo toma un largo tiempo para converger.
El estado de entrenamiento se muestra para cada iteración. (Si show se inicializa
NaN, entonces el estado de entrenamiento nunca se muestra.) Los otros parámetros
determinan cuando para el entrenamiento. El entrenamiento se detiene si el número
de iteraciones excede epochs, si los decrementos de la función de desempeño
están por debajo de goal, si la magnitud de el gradiente está en menos del mingrad,
o si el tiempo de entrenamiento es más largo que time. Y max_fail que es asociado
con la técnica de detención temprana.
El siguiente código crea un entrenamiento de entradas p y objetivos t. se entrenara
por lotes, todos los vectores de la entrada se ponen en una matriz.
•
p = [-1 -1 2 2;0 5 0 5];
•
t = [-1 -1 1 1];
Luego, se crea la red feedforward.
•
net=newff(minmax(p),[3,1],{'tansig','purelin'},'traingd');
Si se quiere modificar algunos de los parámetros de entrenamiento predefinidos se
hace así.
•
net.trainParam.show = 50;
•
net.trainParam.lr = 0.05;
•
net.trainParam.epochs = 300;
•
net.trainParam.goal = 1e-5;
Si se quiere usar los parámetros de entrenamiento predefinidos,
las órdenes
anteriores no son necesarias.
Ahora entrenar la red.
•
[net,tr]=train(net,p,t);
•
traingd, Performance goal met.
Los entrenamientos graban el tr que contiene la información sobre el progreso de
entrenamiento
Ahora la red especializada puede simularse para obtener su respuesta a las
entradas en el entrenamiento.
•
a = sim(net,p)
3.6.3. DESCENSO DE GRADIENTE POR LOTES CON MOMENTUMN (traingdm).
Además del traingd, hay otro algoritmo de descenso de gradiente de lotes para
redes feedforward que proporciona una convergencia más rápida, el traingdm, que
incluye un descenso con velocidad adquirida. el momentumn permite que la red no
sólo responda a el gradiente local sino también a las tendencias del error. Actuando
como un filtro del bajo-paso, el momentumn permite a la red ignorar rasgos
pequeños en el error. Sin el momentumn una red puede estancarse en un mínimo
local poco profundo.
El momentumn puede agregarse al aprendizaje del backpropagation haciendo
cambios de peso iguales a la suma de un fragmento del último cambio de peso y el
nuevo cambio sugerido por la regla del backpropagation. La magnitud del efecto
que el último cambio de peso se permite tener es mediada por una constante de
velocidad adquirida, mc que puede ser cualquier número entre 0 y 1. Cuando la
constante de momentumn es 0, un el cambio de peso es solamente basado en el
gradiente. Cuando la constante de momentumn es 1, el nuevo cambio de peso se
pone para igualar el último cambio de peso y el gradiente simplemente se ignora. El
gradiente es computada sumando los gradientes calculadas a cada dato de
entrenamiento y sólo se actualizan los pesos y el umbral después de todos los datos
del entrenamiento que se ha presentado.
Si la nueva función de desempeño en una iteración dada excede la función de
desempeño en una iteración anterior por más de un max_perf_inc de proporción de
predefinida (típicamente 1.04), se desechan los nuevos pesos, el umbral, y el mc
coeficiente de momentumn se pone en cero.
La forma de entrenamiento de descenso de gradiente con momentumn se invoca
con la función traingdm. Esta función usa los mismos pasos mostrados que el
traingd sólo que el mc, lr y max_perf_inc aprenden todos parámetros.
En el código siguiente se utilizara la red creada anteriormente pero será entrenada
con la función traingd. Los parámetros serán iguales con la inclusión del mc factor
de momentumn y el máximo perfonmance aumento max_perf_inc. (Los parámetros
de entrenamiento se restablecen a los valores predefinidos siempre que net.trainFcn
se ponga al traingdm.).
•
net=newff(minmax(p),[3,1],{'tansig','purelin'},'traingdm');
•
net.trainParam.show = 50;
•
net.trainParam.lr = 0.05;
•
net.trainParam.mc = 0.9;
•
net.trainParam.epochs = 300;
•
net.trainParam.goal = 1e-5;
•
[net,tr]=train(net,p,t);
•
a = sim(net,p)
•
a=
-1.0026 -1.0044
0.9969
0.9992
3.7. ENTRENAMIENTO RÁPIDO
Los dos algoritmos de entrenamiento backpropagation: descenso de gradiente, y
descenso de gradiente con velocidad adquirida. Son métodos son lentos y para
resolver problemas prácticos. Existen algoritmos que pueden converger de diez a
cien veces más rápidamente que estos.
Estos algoritmos más rápidos entran en dos categorías principales. La primera
categoría usa técnicas heurísticas que se desarrollaron de un análisis para la
optimización del algoritmo de descenso de gradiente normal. Una de estas
modificaciones heurísticas es la técnica de velocidad adquirida. Dos de estas
técnicas heurísticas son: el de variable de taza de aprendizaje traingda; y el de
rezago trainrp.
3.7.1. TAZA DE APRENDIZAJE (traingda, traingdx)
Con el algoritmo de descenso normal, la proporción de aprendizaje se mantiene
constante a lo largo del entrenamiento. La activación del algoritmo es muy sensible
a la taza de aprendizaje. Si la esta se fija demasiado alta, el algoritmo puede oscilar
y volverse inestable. Si la taza de aprendizaje es demasiado pequeña, el algoritmo
tardara en converger. No es práctico determinar el valor óptimo para la taza de
aprendizaje antes de entrenar. El rendimiento del algoritmo de descenso puede
mejorarse si se permite que la taza de aprendizaje pueda cambiar durante el
proceso de entrenamiento.
Además requiere algunos cambios en el procedimiento de entrenamiento usado por
traingd. Primero, se calculan el rendimiento de la red inicial y el error. A cada epochs
se le calculan nuevos pesos, el umbral usando y la taza aprendizaje actual. Se
calculan las nuevas salidas y los errores.
Como con velocidad adquirida, si el nuevo error excede el error viejo por más de un
max_perf_inc predefinido (típicamente 1.04), se desechan los nuevos pesos y el
umbral. Además, la proporción de aprendizaje se disminuye (típicamente
multiplicando por lr_dec = 0.7). Por otra parte, se guardan los nuevos pesos, etc. Si
el nuevo error es menor del error anterior, la taza de aprendizaje se aumenta
(típicamente multiplicando por lr_inc = 1.05).
Este procedimiento aumenta la taza de aprendizaje, pero sólo a la magnitud que la
red puede aprender sin aumentos grandes de error. Así, se obtiene una taza de
aprendizaje aproximada a la óptima. Cuando la taza de aprendizaje es muy alta el
aprendizaje es estable, la taza de aprendizaje se aumenta. Para garantizar una
disminución en el error.
El entrenamiento con taza de aprendizaje adaptable se ejecuta con la función
traingda, se invoca como el traingd, salvo el max_perf_inc, lr_dec, y lr_inc se deben
incluir en los parámetros así.
•
net=newff(minmax(p),[3,1],{'tansig','purelin'},'traingda');
•
net.trainParam.show = 50;
•
net.trainParam.lr = 0.05;
•
net.trainParam.lr_inc = 1.05;
•
net.trainParam.epochs = 300;
•
net.trainParam.goal = 1e-5;
•
[net,tr]=train(net,p,t);
•
a = sim(net,p)
La función traingdx combina taza de aprendizaje adaptable con el entrenamiento de
velocidad adquirida. Se invoca de la misma manera como traingda, sólo que tiene el
mc de coeficiente de momentumn como un parámetro de entrenamiento adicional.
3.7.2. REZAGO (TRAINRP)
En las redes multicapa se usan funciones de transferencia sigmoideas en la capa
oculta. Estas funciones comprimen un rango de la entrada infinito en uno finito. Las
funciones sigmoideas son caracterizadas por que tienden a acercarse a ceros
cuando la entrada es más grande. Esto es un problema cuando se usan algoritmos
de descenso para entrenar una red multicapa con funciones sigmoideas, por que el
gradiente puede tener una magnitud muy pequeña y por consiguiente, causar
cambios pequeños en los pesos y el umbral, aunque los pesos y el umbral están
lejos de sus valores óptimos.
El propósito del algoritmo de entrenamiento de rezago (Rprop) es eliminar los
efectos de las magnitudes de los derivados parciales. La señal del derivado se usa
para determinar la dirección de la actualización del peso; la magnitud del derivado
no tiene efecto en la actualización del peso. El tamaño del cambio de peso es
determinado por un valor de actualización aparte. El valor de actualización para
cada peso y el umbral es aumentado por un factor delt_inc siempre que el derivado
de la función de desempeño con respecto a ese peso tenga la misma señal para
dos iteraciones sucesivas. El valor de actualización es disminuido por un factor
delt_dec siempre que el derivado con respeto que el peso cambie la señal de la
iteración anterior.
Si el derivado es cero, entonces los restos de valor de
actualización son los
mismos.
Siempre que los pesos estén oscilando que el
cambio de peso se reducirá. Si el peso continúa cambiando en la misma dirección
para varias iteraciones, entonces la magnitud del cambio de peso se aumentará.
Los parámetros de entrenamiento para el trainrp son epochs, show, goal, time,
min_grad, max_fail, delt_inc, delt_dec, delta0, deltamax. Los últimos dos son el
tamaño del paso inicial y el máximo tamaño, respectivamente. El algoritmo Rprop
generalmente converge más rápido que los algoritmos anteriores.
•
net=newff(minmax(p),[3,1],{'tansig','purelin'},'trainrp');
Rprop generalmente es más rápido que el algoritmo de descenso normal. También
requiere sólo un espacio modesto en memoria.
3.8. ALGORITMOS DE GRADIENTE CONJUGADO
El algoritmo del backpropagation básico ajusta los pesos en la dirección de
descenso (negativo del gradiente). Ésta es la dirección en la que la función de
desempeño disminuye rápidamente. Aunque la función disminuya rápidamente a lo
largo del negativo del gradiente, esto necesariamente no produce una convergencia
más rápida. En los algoritmos de gradiente conjugado una búsqueda se realiza a lo
largo de direcciones conjugadas que producen generalmente una convergencia más
rápida que las direcciones de descenso.
En la mayoría de los algoritmos de gradiente conjugado, el tamaño del paso se
ajusta en cada iteración. Una búsqueda se hace a lo largo de la dirección de
gradiente conjugado para determinar el tamaño del paso que minimiza la función de
desempeño. Hay cinco funciones de la búsqueda diferentes incluidas en el toolbox y
cuatro variaciones diferentes de algoritmos de este tipo.
3.8.1. ACTUALIZACIÓN DE FLETCHER-REEVES (traincgf)
Todos los algoritmos de gradiente conjugado empiezan investigando en la dirección
de descenso (negativo de gradiente) en la primera iteración.
Se realiza una búsqueda de la línea para determinar la distancia óptima para
determinar la dirección de la búsqueda actual entonces:
Entonces la próxima dirección de búsqueda es determinada para que sea conjugada
a las direcciones de la búsqueda anteriores. El procedimiento determina la nueva
dirección de la búsqueda al combinar la nueva dirección de descenso con la
dirección de la búsqueda anterior:
Las diferentes versiones de gradiente conjugado son distinguidas por la manera en
la que la constante
se computa. Para el Fletcher-Reeves el procedimiento es:
En el siguiente código se incluyen los parámetros de entrenamiento para el traincgf
son epochs, epochs, show, goal, time, min_grad, max_fail, srchFcn, scal_tol, alfa,
beta, delta, gama, low_lim, up_lim, maxstep, minstep, bmax.. El parámetro srchFcn
es el nombre de la función de búsqueda lineal. Puede ser cualquiera de las
funciones que existen (o una función usuario). Los parámetros restantes son
asociados con rutinas de búsqueda lineal específicas. La búsqueda lineal
predefinida el srchcha se usa en este ejemplo. El traincgf generalmente converge en
menos iteraciones que el trainrp (aunque hay más cómputo requerido en cada
iteración).
•
net=newff(minm ax(p),[3,1],{'tansig','purelin'},'traincgf');
•
net.trainParam.show = 5;
•
net.trainParam.epochs = 300;
•
net.trainParam.goal = 1e-5;
•
[net,tr]=train(net,p,t);
•
a = sim(net,p)
3.8.2. ACTUALIZACIÓN DE POLAK-RIBIÉRE (traincgp)
Otra versión del algoritmo de pendiente conjugado fue propuesta por Polak y
Ribiére. Como con el algoritmo de Fletcher-Reeves, la dirección de la búsqueda a
cada iteración es determinada por:
Para Polak-Ribiére la constante
se calcula con:
En el siguiente código, se tomara el mismo ejemplo anterior y se entrenara con
versión del algoritmo de Polak-Ribiére. Los parámetros de entrenamiento para el
traincgp son iguales que para el traincgf. La búsqueda lineal predefinida el srchcha
se usa en este ejemplo. Los parámetros show y epochs tienen a los mismos valores.
•
net=newff(minmax(p),[3,1],{'tansig','purelin'},'traincgp');
•
net.trainParam.show = 5;
•
net.trainParam.epochs = 300;
•
net.trainParam.goal = 1e-5;
•
[net,tr]=train(net,p,t);
•
a = sim(net,p)
3.8.3. RESTABLECIMIENTO DE POWELL-BEALE (traincgb)
Para todos los algoritmos de gradiente conjugado, la dirección de la búsqueda se
restablecerá periódicamente al negativo del gradiente. La norma de restablecer
ocurre cuando el número de iteraciones es igual al número de parámetros de la red
(pesos y el umbral), pero hay otros métodos de restablecimiento que pueden
mejorar la eficacia de entrenamiento. Esto se prueba con la siguiente desigualdad:
Si esta condición está satisfecha, la dirección de la búsqueda se restablece al
negativo de la pendiente.
En el siguiente código, se crea nuevamente la red anterior y se entrena con la
versión del algoritmo de Powell-Beal. Los parámetros de entrenamiento para el
traincgb son los mismos que para el traincgf. La búsqueda lineal predefinida el
srchcha se usa en este ejemplo. Los parámetros show y epochs tienen los mismos
valores.
•
net=newff(minmax(p),[3,1],{'tansig','purelin'},'traincgb');
•
net.trainParam.show = 5;
•
net.trainParam.epochs = 300;
•
net.trainParam.goal = 1e-5;
•
[net,tr]=train(net,p,t);.
•
a = sim(net,p)
3.8.4. GRADIENTE CONJUGADO ESCALADO (TRAINSCG)
Hasta ahora cada uno de los algoritmos de gradiente conjugado requiere una
búsqueda lineal en cada iteración.
Esta búsqueda lineal requiere un alto nivel
computacional, ya que requiere que la respuesta de la red a todas las entradas de
entrenamiento sea computada en varios tiempos por cada búsqueda. El algoritmo
de gradiente conjugado escalado (SCG) fue diseñado para evitar la búsqueda lineal.
Este algoritmo es demasiado complejo para explicar en unas líneas, pero la idea
básica es combinar el la aproximación de región de modelo-confianza con el
gradiente conjugado.
En el siguiente código, se crea nuevamente la red anterior pero ahora utilizando el
algoritmo de entrenamiento de gradiente escalado.
Los parámetros de
entrenamiento para el trainscg son epochs, epochs, show, goal, time, min_grad,
max_fail, sigma, lambda. El parámetro sigma determina el cambio en el peso para la
segunda aproximación derivativa. El parámetro lambda regula la indecisión. Los
parámetros show y epchs son 10 y 300, respectivamente.
•
net=newff(minmax(p),[3,1],{'tansig','purelin'},'trainscg');
•
net.trainParam.show = 10;
•
net.trainParam.epochs = 300;
•
net.trainParam.goal = 1e-5;
•
[net,tr]=train(net,p,t);.
•
a = sim(net,p)
3.9. RUTINAS DE BÚSQUEDA LINEAL
Algunos de los algoritmos de entrenamiento de gradiente conjugado y cuasi-Newton
requieren una búsqueda lineal. Toolbox ofrece cinco búsquedas lineales diferentes
que se puede usar con el parámetro srchFcn de la función entrenamiento y dando a
este el valor de la función de búsqueda deseada.
3.9.1. BÚSQUEDA DE SECCIÓN DORADA (srchgol)
La búsqueda de sección dorada srchgol, es una búsqueda lineal que no requiere el
cálculo de la pendiente. Esta rutina empieza localizando un intervalo en el que el
mínimo de la activación ocurre. Esto se hace evaluando la activación a una sucesión
de puntos, empezando a una distancia de delta y doblando en esta distancia cada
paso, a lo largo de la dirección de la búsqueda. Cuando la activación aumenta entre
dos iteraciones sucesivas, un mínimo se une. El próximo paso es reducir el tamaño
del intervalo que contiene el mínimo. Se localizan dos nuevos puntos dentro del
intervalo inicial. Los valores de la activación a estos dos puntos determinan una
sección del intervalo que puede desecharse y un nuevo punto interior se pone
dentro del nuevo intervalo. Este procedimiento es seguido hasta que el intervalo de
incertidumbre se reduzca al tamaño que es igual al delta/scale_tol.
3.9.2. BÚSQUEDA DE BRENT (srchbre)
La búsqueda de Brent es una búsqueda lineal y una combinación híbrida de la
búsqueda de la sección dorada y una interpolación cuadrática. Los métodos de
comparación de función, como la búsqueda de la sección dorada, tienen una
proporción del primer orden de convergencia, mientras los métodos como el de
interpolación polinómica tienen una proporción que es más rápida que la súper
lineal.
Por otro lado, la proporción de convergencia para las salidas de búsqueda
de sección doradas cuando el algoritmo se inicializa es considerando que la
conducta proporcional para los métodos de la interpolación polinómica puede tomar
muchas iteraciones para soluc ionarse. La búsqueda de Brent intenta combinar los
mejores atributos de ambos acercamientos.
Para la búsqueda de Brent se empieza con el mismo intervalo de incertidumbre que
se uso con la búsqueda de la sección dorada, pero algunos puntos adicionales se
computan. Una función cuadrática se ajusta entonces a estos puntos y el mínimo
de la función cuadrática se computa.
Si este mínimo está dentro del intervalo
apropiado de incertidumbre, se usa en la próxima fase de la búsqueda y una nueva
aproximación cuadrática se realiza. Si las caídas mínimas están fuera del intervalo
conocido de incertidumbre, entonces un paso de la búsqueda de la sección dorada
se realizara.
3.9.3. BÚSQUEDA BISECCIÓN-CÚBICA HÍBRIDA (srchhyb)
La búsqueda de Brent, srchhyb son un algoritmo híbrido. Es una combinación de
bisección y la interpolación cúbica. Para el algoritmo de la bisección, un punto se
localiza en el intervalo de incertidumbre, la activación y su derivado se computan.
Basados en esta información, la mitad del intervalo de incertidumbre se desecha. En
el algoritmo híbrido, una interpolación cúbica de la función es obtenida usando el
valor de la activación y su derivado a los dos puntos del extremo. Si el mínimo de la
interpolación cúbica cae dentro del intervalo conocido de incertidumbre, entonces se
usa para reducir el intervalo de incertidumbre. De lo contrario un paso del algoritmo
de bisección se usa.
3.9.4. BÚSQUEDA DE CARAMBOLA (srchcha)
El método de Carambola srchcha fue diseñado para ser usado en combinación con
un algoritmo de gradiente conjugado para el entrenamiento de red neuronal. Como
los dos métodos anteriores, es una búsqueda híbrida. Usa una interpolación cúbica,
junto con un tipo de seccionamiento.
3.9.5. BACKTRACKING (srchbac)
La búsqueda backtracking srchbac se satisface mejor para usar con los algoritmos
de optimización cuasi-Newton.
Empieza con un multiplicador del paso de 1 y
entonces se reduce hasta un valor aceptable en la activación. En el primer paso
usa el valor de activación al punto actual y a un multiplicador del paso de 1.
También usa el valor del derivado de activación al punto actual, obtener una
aproximación cuadrática a la función de la activación a lo largo de la dirección de la
búsqueda. El mínimo de la aproximación cuadrática se vuelve un punto óptimo
provisional (bajo ciertas condiciones) y la activación se prueba. Si la activación no
se reduce suficientemente, una interpolación cúbica se obtiene y el mínimo de la
interpolación cúbica se vuelve el nuevo punto óptimo provisional. Este proceso es
continuado hasta lograr reducción suficiente en la activación.
3.10. ALGORITMOS CUASI-NEWTON
3.10.1. ALGORITMO DE BFGS (trainbgf)
El método de Newton es una alternativa a los métodos de gradiente conjugado para
la optimización rápida. El paso básico del método de Newton es:
Donde
es la matriz de Hesianos de la segunda derivada del índice de la
activación, los valores actuales de los pesos y el umbral. El método de Newton
converge a menudo más rápidamente que los métodos de gradiente conjugado.
Desgraciadamente, es complejo y requiere alta computabilidad. Hay una clase de
algoritmos que son basados en el método de Newton, pero que no requiere el
cálculo de la segunda derivada. Éstos se llaman cuasi-Newton (o secantes). Ellos
actualizan una matriz de Hesianos aproximada a cada iteración del algoritmo. La
actualización se computa como una función de gradiente. El método cuasi-Newton
más exitoso en estudios publicados es el Broyden, Fletcher, Goldfarb, y Shanno
(BFGS) la actualización. Este algoritmo se logra con la función trainbfg.
Ahora en el ejemplo se reiniciara la red pero ahora entrenándola con el algoritmo
BFGS cuasi-Newton. Los parámetros de entrenamiento para el trainbfg serán igual
que aquéllos para el traincgf. La búsqueda lineal predefinida es el srchbac. Los
parámetros show y epochs corresponden a 5 y 300, respectivamente.
•
net=newff(minmax(p),[3,1],{'tansig','purelin'},'trainbfg');
•
net.trainParam.show = 5;
•
net.trainParam.epochs = 300;
•
net.trainParam.goal = 1e-5;
•
[net,tr]=train(net,p,t);
•
a = sim(net,p)
3.10.2. ALGORITMO SECANTE DE UN PASO (trainoss)
Desde que el algoritmo BFGS requiere más almacenamiento y cómputo en cada
iteración que los algoritmos de gradiente conjugado, surge la necesidad de una
aproximación secante con almacenamiento más pequeño y menos requisitos del
cómputo. El método secante de un paso (OSS) es un esfuerzo cubrir el espacio
entre los algoritmos de gradiente conjugado y
los algoritmos cuasi-Newton
(secante). Este algoritmo no guarda la matriz de Hesianos completa; asume en
cada iteración que el Hesiano anterior era la matriz de identidad. Esto tiene la
ventaja adicional que la nueva dirección de la búsqueda puede calcularse sin
computar el inverso de la matriz.
Nuevamente es creado nuestro habitual ejemplo reemplazando la red y
entrenándola mediante el algoritmo de secante de un paso. Los parámetros de
entrenamiento para el trainoss son iguales que para el traincgf. La búsqueda de la
línea predefinida es srchbac. Los parámetros show y epochs son ajustados a 5 y
300, respectivamente.
•
net=newff(minmax(p),[3,1],{'tansig','purelin'},'trainoss');
•
net.trainParam.show = 5;
•
net.trainParam.epochs = 300;
•
net.trainParam.goal = 1e-5;
•
[net,tr]=train(net,p,t);
•
a = sim(net,p)
3.10.3. LEVENBERG-MARQUARDT (trainlm)
Como los métodos cuasi-Newton, el algoritmo de Levenberg-Marquardt fue
diseñado para acercarse en segundo orden que entrena a gran velocidad sin tener
que computar la matriz de Hesianos. Cuando la función de la activación tiene la
forma de una suma de cuadrados (como es típico entrenando feedforward),
entonces la matriz de Hesianos puede aproximarse como:
Y el gradiente puede computarse como:
Donde
es la matriz de Jacobianos que contiene la derivada de los errores de la
red primero con respecto a los pesos y el umbral y
red.
es el vector de errores de la
La matriz de Jacobianos puede computarse a través de backpropagation
normal que es mucho menos complejo de computar que la matriz de Hesianos.
El algoritmo de Levenberg-Marquardt hace esta aproximación de la matriz de
Hesianos como la siguiente actualización Newton:
Cuando el escalar µ es cero, se comporta como el método de Newton usando la
matriz de Hesianos aproximada. Cuando µ es alto, se comporta de descenso de
gradiente pero con un paso pequeño. El método de Newton es más rápido y más
exacto cerca de un mínimo del error, así que el objetivo es cambiar hacia el método
de Newton tan rápidamente como sea posible. Así, µ se disminuye después de cada
paso exitoso (reducción en función de la activación) y sólo se aumenta en un paso
provisional. De esta manera, la función de desempeño se reducirá siempre a cada
iteración del algoritmo.
En el ejemplo se reinicia la red y se entrena usando el algoritmo de LevenbergMarquardt. Los parámetros de entrenamiento para trainlm son epochs, show, goal,
time, min_grad, max_fail, mu, mu_dec, mu_inc, mu_max, mem_reduc,. El parámetro
mu es el valor inicial de µ. Este valor es multiplicado por mu_dec siempre que la
función de desempeño se reduzca un paso. Es multiplicado por mu_inc siempre que
aumentara la función de desempeño en un paso. Si mu se vuelve mayor que el
mu_max, el algoritmo se detiene. El parámetro mem_reduc se usa para controlar la
cantidad de memoria usada por el algoritmo. Los parámetros show y epochs se
inicializan en 5 y 300, respectivamente.
•
net=newff(minmax(p),[3,1],{'tansig','purelin'},'trainlm');
•
net.trainParam.show = 5;
•
net.trainParam.epochs = 300;
•
net.trainParam.goal = 1e-5;
•
[net,tr]=train(net,p,t);
•
a = sim(net,p)
3.10.4. LEVENBERG-MARQUARDT DE MEMORIA REDUCIDA (trainlm)
El inconveniente principal del algoritmo de Levenberg-Marquardt es que requiere
hacer el almacenamiento de las matrices que con toda seguridad es bastante
grande. El tamaño de la matriz de Jacobianos es
, donde Q es que el número
de juegos de entrenamiento y n es el número de pesos y el umbral en la red.
Resulta que esta matriz no tiene que ser computada y guarda en conjunto. Por
ejemplo, si se quiere dividir el Jacobiano en dos submatrices iguales que se pueden
computar como la matriz aproximada de Hesianos así:
El Hesiano aproximado puede ser computado sumando una serie de subterminos.
Una vez un subtermino se ha computado pueden aclararse las submatrices
correspondientes del Jacobiano.
Cuando se usa la función de entrenamiento trainlm, el parámetro mem_reduc se usa
para determinar cuántas filas del Jacobiano serán computadas en cada submatriz.
Si el mem_reduc toma el valor 1, entonces el Jacobiano lleno se computa y ninguna
reducción de memoria se logra. Si el mem_reduc se pone a 2, entonces sólo la
mitad del Jacobiano se computará. Esto ahorra es la mitad de la memoria usada por
el cálculo del Jacobiano lleno.
3.11. REGULARIZACIÓN
El primer método para mejorar la generalización se llama regularización. Donde se
va modificando la función de desempeño que normalmente se es la suma de
cuadrados de los errores de la red en entrenamiento.
3.11.1. FUNCIÓN DE DESEMPEÑO MODIFICADA
La función de desempeño típica que se usa para entrenar las redes feedforward es
la suma de cuadrados de los errores de la red.
Es posible mejorar generalización si se modifica la función de desempeño
agregando un término que consiste en la suma de cuadrados de los pesos de la red
y el umbral.
Donde
es la proporción de activación, y
Usando esta función de desempeño causarán la red tenga pesos y umbrales más
pequeños y esto obligará a que las salidas la red sea más plana.
En el siguiente ejemplo se reinicializara la red y se volverá a entrenar usando el
algoritmo de BFGS con la función de desempeño regularizada. La proporción de
actuación será 0.5 y el peso igual a los errores cuadrados de los pesos. pesos
cuadrados malos.
•
net=newff(minmax(p),[3,1],{'tansig','purelin'},'trainbfg');
•
net.performFcn = 'msereg';
•
net.performParam.ratio = 0.5;
•
net.trainParam.show = 5;
•
net.trainParam.epochs = 300;
•
net.trainParam.goal = 1e-5;
•
[net,tr]=train(net,p,t);
El problema con regularización es que es difícil de determinar el valor óptimo por el
parámetro de proporción de activación. Si se hace este parámetro demasiado
grande, nosotros podemos conseguir más aproximado. Si la proporción es
demasiado pequeña,
la red no encajará los datos de entrenamiento de forma
adecuada.
3.11.2. REGULARIZACIÓN AUTOMATIZADA (trainbr)
Es deseable determinar los parámetros de regularización óptimos en una moda
automatizada. Un acercamiento a este proceso Bayesiano de David MacKay. En
este armazón, los pesos y el umbral de la red se asumen como variables al azar con
distribuciones especifica. Los parámetros de regularización se relacionan a las
variaciones desconocidas y asociadas con estas distribuciones.
La regularización Bayesiana se hace con la función trainbr. El siguiente código
muestra cómo se puede entrenar una 1-20-1 red que usa esta función para
aproximar.
•
p = [-1:.05:1];
•
t = sin(2*pi*p)+0.1*randn(size(p));
•
net=newff(minmax(p),[20,1],{'tansig','purelin'},'trainbr');
•
net.trainParam.show = 10;
•
net.trainParam.epochs = 50;
•
randn('seed',192736547);
•
net = init(net);
•
[net,tr]=train(net,p,t);
Un rasgo de este algoritmo proporciona una medida de cuántos parámetros de la
red (pesos y umbral) es usando eficazmente por esta. En este caso, la red
especializada final usa aproximadamente 12 parámetros (indicado por #Par) fuera
del total de 61 pesos y umbral en la red 1-20-1. Este número eficaz de parámetros
debe permanecer aproximadamente igual, no importa que tan grande sea el número
total de parámetros en la red. (Esto asume que la red ha estado especializada para
un número suficiente de iteraciones y asegura su convergencia.)
El algoritmo del trainbr generalmente trabaja mejor cuando se descascaran las
entradas de la red y objetivos para que ellos se escalen aproximadamente [-1,1].
Ése es el caso para el problema de la prueba que se ha usado. Si sus entradas y
objetivos no se escalan en este rango, se puede usar la función premnmx, o prestd.
La figura siguiente muestra la salida de la red especializada. Se ve que la respuesta
de la red esta muy cerca de la función seno subyacente (línea punteada), y por
consiguiente, la red generalizará bien a las nuevas entradas.
Al usar trainbr, es importante dejar correr el algoritmo hasta el número justo de
parámetros que han convergido. Los entrenamientos se detienen con el mensaje
"Maximum MU reached.". Esto indica que el algoritmo ha convergido de verdad.
También puede decirse que el algoritmo ha convergido si la suma cuadrada del
error (SSE) y la suma cuadrada de los pesos (SSW) son relativamente constantes
en varias iteraciones.
Figura 3.7
3.12. DETENCIÓN TEMPRANA
Otro método para mejorar la generalización es el de detención temprana. En esta
técnica los datos disponibles
son divididos tres subconjuntos.
El primer
subconjunto es el entrenamiento puesto que se usa para computar el gradiente y
actualizar los pesos de la red y el umbral. El segundo subconjunto es el juego de
aprobación. El error en el juego de aprobación se supervisa durante el proceso de
entrenamiento. El error de aprobación normalmente disminuirá durante la fase inicial
de entrenamiento. Sin embargo, cuando la red empieza validar los datos, el error en
el juego de aprobación empezará a subir típicamente. Cuando el error de
aprobación aumenta para un número especificado de iteraciones, el entrenamiento
se detiene y se vuelven los pesos y el umbral al mínimo del error de aprobación.
Primero se crea un problema de una prueba simple. Para este entrenamiento
generando una ola de la función seno que oscila entre -1 a 1 con pasos de 0.05.
•
p = [-1:0.05:1];
•
t = sin(2*pi*p)+0.1*randn(size(p));
Luego se genera el juego de aprobación. Las entradas van de -1 a 1, como en la
prueba puesta. Para hacer el problema más realista, se agrega también una
sucesión del ruido diferente a la función seno subyacente.
•
val.P = [-0.975:.05:0.975];
•
val.T = sin(2*pi*v.P)+0.1*randn(size(v.P));
Para este ejemplo se usa la función de entrenamiento traingdx.
•
net=newff([-1 1],[20,1],{'tansig','purelin'},'traingdx');
•
net.trainParam.show = 25;
•
net.trainParam.epochs = 300;
•
net = init(net);
•
[net,tr]=train(net,p,t,[],[],val); 6
•
TRAINGDX, Validation stop.
La figura siguiente muestra un gráfico de la respuesta de la red.
Figura 3.8
3.13. PREPROCESO Y POSTPROCESO
Puede hacerse una red neuronal más eficaz si se realizan ciertos pasos en el
preprocesando las entradas y los objetivos de la red.
Min y Max (premnmx, postmnmx, tramnmx)
Antes de entrenar, es útil escalar las entradas y objetivos para que siempre caigan
dentro de un rango específico. La función premnmx puede usarse para escalar las
entradas y objetivos para que queden en el rango [-1,1]. El código siguiente ilustra el
uso de esta función.
•
•
[pn,minp,maxp,tn,mint,maxt] = premnmx(p,t);
net=train(net,pn,tn);
Se dan las entradas y objetivos originales de la red en matrices p y t. pn y tn que
devuelven todos a caer en el intervalo [-1,1]. El minp de los vectores y maxp que
contienen el mínimo y el máximo valor de las entradas originales y los vectores, los
maxt que contienen el mínimo y el máximo valor de los objetivos originales.
Después que la red ha estado especializada, estos vectores deben usarse para
transformar cualquier entrada futura que se aplica a la red. Ellos se vuelven una
parte de la red.
Si el premnmx se usa para escalar las entradas y objetivos, entonces la salida de la
red se entrenará para produc ir respuestas en el rango [-1,1]. Si se quiere convertir
estos resultados en las mismas unidades que se usaron para los objetivos
originales, entonces se debe usar el postmnmx. En el código siguiente, simula la
red, y convierte las salidas de la red a las unidades originales.
•
an = sim(net,pn);
•
a = postmnmx(an,mint,maxt);
El rendimiento de la red corresponde al tn de los objetivos normalizados. El
rendimiento de la red in-normalizado está en las mismas unidades como los
objetivos originales t.
Siempre que la red especializada se use con nuevas entradas estas deben ser
preprocesadas con el mínimo y máximo que se computaron para el juego de
entrenamiento. Esto puede lograrse con el tramnmxo. En el código siguiente, se
aplica un nuevo juego de entradas a la red que ya se ha entrenado.
•
pnewn = tramnmx(pnew,minp,maxp);
•
anewn = sim(net,pnewn);
•
anew = postmnmx(anewn,mint,maxt);
Normalización Estándar Dev.(prestd, poststd, trastd)
Otro procedimiento para las entradas y los objetivos de la red es la normalización,
la desviación estándar y normal del juego de entrenamiento. Este procedimiento se
lleva a cabo con la función prestd. Normaliza las entradas y objetivos. El código
siguiente ilustra el uso de prestd.
•
[pn,meanp,stdp,tn,meant,stdt] = prestd(p,t);
Se dan las entradas y objetivos de la red originales en matrices p y t. Las entradas
normalizadas y objetivos, pn y tn que tendrán ceros intermedios y la unidad de
desviación normal. El meanp de los vectores y stdp que contienen las desviaciones
estándar y normales de las entradas originales, y los vectores significativos y los
stdt contienen los medios y las desviaciones normales de los objetivos originales.
Después que la red ha estado especializada, estos vectores deben usarse para
transformar cualquier entrada futura que se aplica a la red.
En el siguiente código se simula la red especializada en el código anterior
y
convierte las salidas de la red atrás en las unidades originales.
•
an = sim(net,pn);
•
a = poststd(an,meant,stdt);
Las salidas de la red corresponden al tn de los objetivos normalizados. La salida de
la red in-normalizada está en las mismas unidades como los objetivos originales t.
Esto puede lograrse con el trastd. En el siguiente código, se aplica un nuevo juego
de entradas a la red ya hemos entrenado.
•
pnewn = trastd(pnew,meanp,stdp);
•
anewn = sim(net,pnewn);
•
anew = poststd(anewn,meant,stdt);
4. REDES NEURONALES Y SERIES DE TIEMPO
4.1. REDES NEURONALES EN LA PREDICCION
En la actualidad, las Redes Neuronales Artificiales, se reconocen como una de las
herramientas matemáticas de uso computacional que mejores resultados presenta a
la hora de modelar un problema, ya sea de aproximación de funciones: como el
diagnostico y control de maquinaria, en el control del piloto automático de un avión,
o en el control de un robot. En problemas de clasificación: como el diagnostico
medico, reconocimiento de caracteres, detección de fraude o clasificación de riesgo
crediticio. En el procesamiento de datos: como en el filtrado de ruido o en el
encriptamiento de información,
La predicción de series de tiempo, es algo que ha ocupado mucho a investigadores
de distintas disciplinas debido al interés que producen, en parte debido a la alta nolinealidad de su comportamiento fluctuante y a veces “caprichoso”. Varios modelos
matemáticos han sido diseñados para el tratamiento de la predicción en las series
de tiempo, el más conocido es el Proceso Autorregresivo Integrado de Media Móvil
(ARIMA), comúnmente conocido como la metodología de Box-Jenkins (1976). Este
método de predicción, que se utiliza muy frecuentemente se fundamenta en el su
puesto implícito de la linealidad del sistema que generan la trayectoria de las
variables, mas información sobre este y otros modelos de predicción pude ser
encontrada en el capitulo 1.
Sin embargo, las RNA han tenido aquí un éxito que otras técnicas no han logrado.
Diferentes modelos de redes neuronales han sido desarrollados para la predicción
de mercados, algunos se enfocan en la predicción del precio futuro de un valor o en
modelar la rentabilidad de una acción, otros son aplicados para reconocer ciertos
patrones de precios del mercado.
4.1.1. ALGUNOS TRABAJOS DE PREDICCIÓN CON REDES NEURONALES
En los últimos años se cuenta con muchos trabajos en la predicción de series de
tiempo utilizando redes neuronales artificiales, de los cuales podemos mencionar los
siguientes:
•
Predicción de acciones. Consiste en el desarrollo de una red neuronal capaz de
realizar la predicción del precio de las acciones para un número dado de
compañías. Esta predicción se realiza mediante redes alimentadas hacia
adelante, y el objetivo en este particular caso es predecir el siguiente valor en la
serie de tiempo: el próximo precio de la acción. 11
•
Predicción de tráfico vehicular. Se han utilizado redes neuronales recurrentes
para la predicción a corto plazo del tráfico en una carretera, a fin de prevenir
congestiones y tener un control del acceso a la autopista. Para esto se utilizan
datos estimados de otros días con propiedades similares; los mejores resultados
se obtuvieron con una red multi - recurrente, y se pudo comprobar que las redes
neuronales resolvieron este tipo de predicción y obtuvieron mejores resultados
que los métodos estadísticos convencionales. 12
•
Predicción de Tornado. Basada en atributos obtenidos de un radar Doppler, el
cual observa diferentes fenómenos que a la larga llegan a producir tornados. Las
tormentas eléctricas algunas veces llegan a producirlos, pero no siempre son
antecedente de ello. Una red neuronal alimentada hacia adelante es usada para
diagnosticar cuales fenómenos detectados por el radar llegarán a producir un
tornado. La red neuronal es diseñada para la identificación de tornados, con ese
fin, se desarrollaron procedimientos para determinar el tamaño del conjunto de
11
Se puede encontrar más información en un trabajo enfocado a la predicción financiera.
UNIVERSIDAD DE VIGO. Negative Feedback Network For Financial Prediction (pdf), Marzo de
2004, http://ann7.ei.uvigo.es/~fdiaz/doc/1999sci-isas.pdf.
12
Un interesante modelo para la predicción del tráfico. TAO, Yang, A Neural Network Model for
Traffic Prediction in the Presence of Incidents via Data Fusion, Universidad de Wisconsin, Julio de
2004, http://homepages.cae.wisc.edu/~yang/incident%20impact_final.pdf.
entrenamiento y el número de nodos ocultos necesarios para el funcionamiento
óptimo. Se mostró que la red neuronal encontrada de este modo supera un
algoritmo basado en reglas.13
4.2. DESARROLLO DE LA INVESTIGACION
Utilizando un método de pronóstico no tradicional, como las redes neuronales, se
intentara establecer mediante resultados comparativos la efectividad de la
predicción para una serie de tiempo de tipo común.
La serie elegida es el consumo mensual de ACPM, los datos de esta serie fueron
tomados desde el mes de enero de 1998 hasta el mes diciembre de 2003. 72 datos
en total. Estos datos fueron actualizados en marzo 19 de 2004 por personal del
departamento de planeación nacional. El consumo de ACPM presenta variaciones
importantes mes a mes debido a factores como el precio de la gasolina, importación
de petróleo y al observar la serie se podría pensar a priori que las épocas del año
afectan el consumo.
La metodología propuesta para realizar esta investigación es:
1. Presentación de la serie.
2. Preprocesamiento de los datos: Es decir una preparación de los datos, una
transformación de los datos si es necesario (escalamiento, logaritmización,
normalización, etc.)
3. Analizar mediante métodos estadísticos básicos el estado de la serie y basados
en ellos hacer una selección de los parámetros óptimos iniciales.
4. Analizar la serie con la ayuda del Neural Network Toolbox de Matlab.
13
MARZABAN, C. and Stumpf, G.J. (1996), A Neural Network for Tornado Prediction Based on
Doppler Radar-Derived Attributes, Journal of Applied Meteorology Ed 35, 1996. Pag. 617-626.
5. Comparar los datos obtenidos con los datos reales mediante graficas.
6. Concluir con base en los resultados y comparaciones en el posible modelo para
predecir.
4.3. ANALISIS DE LAS SERIE
Los datos de la serie se muestran en el anexo 1, el grafico del consumo de gasolina
ACPM por mes y año se muestra en la figura 4.1.
Figura 4.1: Consumo de Gasolina ACPM (1998 – 2003)
Se toma para el desarrollo del presenta análisis, se toman topologías de 3 capas, en
el capitulo 2 (El MLP como aproximador universal de funciones) se asocia este
hecho a algunos teoremas como los de Kolmogorov y Funahashi, los cuales
demuestran que con solo 3 capas se puede aproximar cualquier función.
Para el desarrollo del análisis de la serie se deben escalan los datos, esto se debe a
las funciones de transferencia que se pretenden usar en el entrenamiento de las
redes, las funciones utilizadas requieren entradas en el rango [-1, 1]. Para este fin
se utilizan las herramientas de Preprocesamiento de datos que ofrece matlab en el
toolbox, más precisamente la función premnmx14.
Se organizan los datos en 2 columnas (Anexo 2), 3 columnas (Anexo 3)
y 4
columnas (Anexo 4). Esta organización se realiza con el fin de manejar topologías
con 1, 2 y 3 neuronas en la capa de entrada y variar de 2 a 3 en la capa oculta y
hasta 2 capas ocultas, esto ultimo tomando en cuenta el numero de ejemplos de
entrenamiento que se tiene disponible de la forma que se escalo y el numero optimo
definido en el capitulo 2 (Número de ejemplos de entrenamiento).
En los anexos se define como Xi las entradas a la red y como D la salida deseada.
Si se observa con un poco más detalle se observa que para predecir la salida
deseada se están usando los datos inmediatamente anteriores.
Se realiza una regresión de los datos de los anexos (2 al 4) y arrogan los siguientes
resultados:
Para 3 entradas y una salida deseada (anexo 4) se tiene un coeficiente de
correlación múltiple del 0,67217, es decir que las 3 entradas explican en un 65% la
salida deseada. Según la prueba f el modelo tiene poder explicativo,
pero
solamente una de las variables explica la serie.
Para 2 entradas y una salida deseada (anexo 3) se tiene un coeficiente de
correlación múltiple del 0,66385, es decir que las 2 entradas explican en un 66% la
salida deseada. Según la prueba f el modelo tiene poder explicativo,
explicado por cada una de las variables.
14
Mas información sobre la función premnmx en la dirección
http://www.mathworks.com/access/helpdesk/help/toolbox/nnet/premnmx.html
se ve
Para 1 entradas y una salida deseada (anexo 2) se tiene un coeficiente de
correlación múltiple del 0,66385, es decir que las 2 entradas explican en un 52% la
salida deseada. Según la prueba f el modelo tiene poder explicativo, pero no es
explicado por la variable dependiente.
Analizando en forma rápida estos resultados vemos que el modelo de 2 entradas y
una salida deseada servirá un poco más que los otros, debido a que sus variables
inciden en el modelo. Por lo tanto, se realiza una división en 2 grupos de los datos
del anexo 2. Basando en ejemplos encontrados en las referencias bibliograficas del
capitulo 2 [1, 6, 7], se formara el primer conjunto con el 75% de los datos, este
conjunto será el conjunto de entrenamiento de la red, los datos restantes se dejaran
como datos de verificación.
Se toman 4 topologías para desarrollar las pruebas a través de matlab, la primera
será 2-2-1 (3 neuronas en la capa de entrada, 2 en la capa oculta y 1 en la capa de
salida), 2-3-1 (3 neuronas en la capa de entrada, 3 en la capa oculta y 1 en la capa
de salida) y 2-2-2-1 (3 neuronas en la capa de entrada, 4 en dos capas ocultas y 1
en la capa de salida). Los resultados arrojados a través del toolbox de matlab
fueron:
TOPOLOGÍA 2-2-1
Traingd
Numero de capas: 3
Neuronas por capa 2 - 2 - 1
Error de entrenamiento 0.101245 de 0.05
Gradiente final 0.000180352 de 1e-010
Numero de iteraciones 60000
Funciones por capa: Purelin – Tansig – Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,2000
1,0000
0,8000
0,6000
d
0,4000
traingd
0,2000
0,0000
-0,2000
1
3
5
7
9
11
13
15
17
-0,4000
Grafica del error (datos de validación)
traingd
1,0000
0,5000
0,0000
traingd
1
3
5
7
9
11
13
-0,5000
-1,0000
Traingdm
Numero de capas: 3
Neuronas por capa: 2 - 2 - 1
Error de entrenamiento: 0.101258 de 0.05
Gradiente final: 0.000306383 de 1e-010
Numero de iteraciones: 60000
Funciones por capa: Purelin – Tansig - Tansig
15
17
Grafica de salida deseada & salida obtenida (datos de validación)
1,2000
1,0000
0,8000
0,6000
d
0,4000
traingd
m
0,2000
0,0000
-0,2000
1
3
5
7
9
11
13
15
17
-0,4000
Grafica del error (datos de validación)
traingdm
0,8000
0,6000
0,4000
0,2000
0,0000
-0,2000
1
3
5
7
9
11
13
15
17
traingdm
-0,4000
-0,6000
-0,8000
-1,0000
Traingda
•
Numero de capas: 3
•
Neuronas por capa: 2 - 2 - 1
•
Error de entrenamiento: 0.101299 de 0.05
•
Gradiente final: 0.0484528 de 1e-010
•
Numero de iteraciones: 60000
•
Funciones por capa: Purelin – Tansig - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,2000
1,0000
0,8000
0,6000
d
0,4000
traingda
0,2000
0,0000
-0,2000
1
3
5
7
9
11
13
15
17
-0,4000
Grafica del error (datos de validación)
traingda
0,6000
0,4000
0,2000
0,0000
-0,2000
1
3
5
7
9
11
13
15
17
traingda
-0,4000
-0,6000
-0,8000
-1,0000
Traingdx
•
Numero de capas: 3
•
Neuronas por capa: 2 - 2 - 1
•
Error de entrenamiento: 0.101959 de 0.05
•
Gradiente final: 0.0747351 de 1e-010
•
Numero de iteraciones: 60000
•
Funciones por capa: Purelin – Tansig - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,2000
1,0000
0,8000
0,6000
d
0,4000
traingdx
0,2000
0,0000
-0,2000
1
3
5
7
9
11
13
15
17
-0,4000
Grafica del error (datos de validación)
traingdx
0,8000
0,6000
0,4000
0,2000
0,0000
-0,2000
-0,4000
1
3
5
7
9
11
13
15
17
traingdx
-0,6000
-0,8000
-1,0000
Trainrp
•
Numero de capas: 3
•
Neuronas por capa: 2 - 2 - 1
•
Error de entrenamiento: 0.101182 de 0.05
•
Gradiente final: 2.88016e-005 de 1e-010
•
Numero de iteraciones: 60000
•
Funciones por capa: Purelin – Tansig - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,2000
1,0000
0,8000
0,6000
d
0,4000
trainrp
0,2000
0,0000
-0,2000
1
3
5
7
9
11
13
15
17
13
15
17
-0,4000
Grafica del error (datos de validación)
trainrp
0,6000
0,4000
0,2000
0,0000
-0,2000
1
3
5
7
9
11
trainrp
-0,4000
-0,6000
-0,8000
-1,0000
Traincgf
•
Numero de capas: 3
•
Neuronas por capa: 2 - 2 - 1
•
Error de entrenamiento: 0.100747 de 0.05
•
Gradiente final: 0.000142827 de 1e-010
•
Numero de iteraciones: 170
•
Funciones por capa: Purelin – Tansig - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,2000
1,0000
0,8000
0,6000
d
0,4000
traincgf
0,2000
0,0000
-0,2000
1
3
5
7
9
11
13
15
17
-0,4000
Grafica del error (datos de validación)
traincgf
0,8000
0,6000
0,4000
0,2000
0,0000
-0,2000
1
3
5
7
9
11
13
15
17
traincgf
-0,4000
-0,6000
-0,8000
-1,0000
Traincgb
•
Numero de capas : 3
•
Neuronas por capa: 2 - 2 - 1
•
Error de entrenamiento: 0.101014 de 0.05
•
Gradiente final: 0.000841213 de 1e-010
•
Numero de iteraciones: 144
•
Funciones por capa: Purelin – Tansig - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,2000
1,0000
0,8000
0,6000
d
0,4000
traincgb
0,2000
0,0000
-0,2000
1
3
5
7
9
11
13
15
17
-0,4000
Grafica del error (datos de validación)
traincgb
1,0000
0,5000
0,0000
traincgb
1
3
5
7
9
11
13
15
17
-0,5000
-1,0000
Trainscg
•
Numero de capas: 3
•
Neuronas por capa: 2 - 2 - 1
•
Error de entrenamiento: 0.0956961 de 0.05
•
Gradiente final: 8.98431e-007 de 1e-010
•
Numero de iteraciones: 10655
•
Funciones por capa: Purelin – Tansig - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,2000
1,0000
0,8000
0,6000
d
0,4000
trainscg
0,2000
0,0000
-0,2000
1
3
5
7
9
11
13
15
17
-0,4000
Grafica del error (datos de validación)
trainscg
0,6000
0,4000
0,2000
0,0000
-0,2000
1
3
5
7
9
11
13
15
17
trainscg
-0,4000
-0,6000
-0,8000
-1,0000
Trainbfg
•
Numero de capas: 3
•
Neuronas por capa: 2 - 2 - 1
•
Error de entrenamiento: 0.101227 de 0.05
•
Gradiente final: 5.83355e-007 de 1e-010
•
Numero de iteraciones: 240
•
Funciones por capa: Purelin – Tansig - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,2000
1,0000
0,8000
0,6000
d
0,4000
trainbfg
0,2000
0,0000
-0,2000
1
3
5
7
9
11
13
15
17
-0,4000
Grafica del error (datos de validación)
trainbfg
1,5000
1,0000
0,5000
trainbfg
0,0000
1
3
5
7
9
11
13
15
17
-0,5000
-1,0000
Trainoss
•
Numero de capas: 3
•
Neuronas por capa: 2 - 2 - 1
•
Error de entrenamiento: 0.0956943 de 0.05
•
Gradiente final: 9.62612e-007 de 1e-010
•
Numero de iteraciones: 31991
•
Funciones por capa: Purelin – Tansig - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,2000
1,0000
0,8000
0,6000
d
0,4000
trainoss
0,2000
0,0000
-0,2000
1
3
5
7
9
11
13
15
17
-0,4000
Grafica del error (datos de validación)
trainoss
0,6000
0,4000
0,2000
0,0000
-0,2000
1
3
5
7
9
11
13
15
-0,4000
-0,6000
-0,8000
-1,0000
Trainml
•
Numero de capas: 3
•
Neuronas por capa: 2 - 2 - 1
•
Error de entrenamiento: 0.0956813 de 0.05
•
Gradiente final: 6.93512e-006 de 1e-010
•
Numero de iteraciones: 12209
•
Funciones por capa: Purelin – Tansig - Tansig
17
trainoss
Grafica de salida deseada & salida obtenida (datos de validación)
1,2000
1,0000
0,8000
0,6000
d
0,4000
trainlm
0,2000
0,0000
-0,2000
1
3
5
7
9
11
13
15
17
-0,4000
Grafica del error (datos de validación)
trainlm
0,6000
0,4000
0,2000
0,0000
-0,2000
1
3
5
7
9
11
13
15
17
trainlm
-0,4000
-0,6000
-0,8000
-1,0000
d
traingd
traingdm
traingda
traingdx
trainrp
traincgf
traincgb
trainscg
trainbfg
trainoss
trainlm
Respuestas obtenidas con la simulación de la red:
-0,20
-0,29
-0,30
-0,31
-0,27
-0,30
-0,30
-0,30
-0,29
-0,29
-0,29
-0,29
0,25
-0,19
-0,19
-0,19
-0,17
-0,20
-0,18
-0,19
-0,16
-0,19
-0,16
-0,16
-0,14
-0,24
-0,25
-0,25
-0,22
-0,25
-0,24
-0,25
-0,22
-0,25
-0,22
-0,22
0,30
0,00
0,00
-0,02
0,04
0,01
0,00
0,00
-0,01
0,00
-0,01
-0,01
0,04
-0,22
-0,22
-0,22
-0,20
-0,23
-0,21
-0,22
-0,19
-0,22
-0,19
-0,19
-0,03
0,04
0,04
0,00
0,07
0,05
0,03
0,04
0,01
0,04
0,01
0,01
0,45
-0,13
-0,13
-0,12
-0,10
-0,13
-0,12
-0,13
-0,10
-0,13
-0,10
-0,10
0,15
-0,16
-0,16
-0,16
-0,14
-0,17
-0,15
-0,16
-0,13
-0,16
-0,13
-0,13
0,48
0,14
0,13
0,06
0,16
0,17
0,11
0,14
0,07
0,14
0,07
0,07
0,01
-0,06
-0,06
-0,07
-0,03
-0,06
-0,06
-0,06
-0,05
-0,06
-0,05
-0,05
0,60
0,17
0,14
0,07
0,18
0,19
0,13
0,16
0,08
0,16
0,08
0,08
0,58
-0,14
-0,14
-0,14
-0,11
-0,14
-0,13
-0,14
-0,11
-0,14
-0,11
-0,11
0,56
0,26
0,21
0,10
0,25
0,10
0,20
0,25
0,12
0,24
0,12
0,12
0,49
0,24
0,20
0,10
0,24
0,14
0,19
0,23
0,11
0,23
0,11
0,11
0,32
0,23
0,19
0,09
0,23
0,18
0,18
0,22
0,11
0,22
0,11
0,11
1,00
0,18
0,15
0,07
0,19
0,20
0,14
0,17
0,08
0,17
0,08
0,08
-0,10
0,05
0,05
0,01
0,08
0,07
0,04
0,05
0,02
0,05
0,02
0,02
-0,30
0,53
0,36
0,18
0,39
0,15
0,41
0,51
0,22
1,00
0,22
0,22
Al hacer un análisis se del error cuadrático generado por matlab y de las graficas de
aproximación, se ven en la figura 4.2 la salida deseada con las 2 funciones que mas
se acercaron al modelo.
1,20
1,00
0,80
0,60
d
0,40
traingd
0,20
traincgb
0,00
-0,20
1
3
5
7
9
11
13
15
17
-0,40
Figura 4.2: Grafica de respuestas obtenidas topología 2 - 2 - 1
TOPOLOGÍA 2-3-1
Traingd
•
Numero de capas:3
•
Neuronas por capa: 2 - 3 - 1
•
Error de entrenamiento: 0.101723 de 0.05
•
Gradiente final: 0.00114838 de 1e-010
•
Numero de iteraciones: 60000
•
Funciones por capa: Purelin – Logsig – Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,2000
1,0000
0,8000
0,6000
d
0,4000
traingd
0,2000
0,0000
-0,2000
1
3
5
7
9
11 13 15
17
-0,4000
Grafica del error (datos de validación)
traingd
0,8000
0,6000
0,4000
0,2000
0,0000
-0,2000 1
-0,4000
-0,6000
-0,8000
-1,0000
Traingdm
3
5
7
9
11
13
15
17
traingd
•
Numero de capas: 3
•
Neuronas por capa: 2 - 3 - 1
•
Error de entrenamiento: 0.101244 de 0.05
•
Gradiente final: 0.000149962 de 1e-010
•
Numero de iteraciones: 60000
•
Funciones por capa: Purelin – Logsig - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,2000
1,0000
0,8000
0,6000
d
0,4000
traingdm
0,2000
0,0000
-0,2000
1
3
5
7
9
11 13 15
17
-0,4000
Grafica del error (datos de validación)
traingdm
1,0000
0,8000
0,6000
0,4000
0,2000
0,0000
-0,2000 1
-0,4000
-0,6000
-0,8000
-1,0000
Traingda
traingdm
3
5
7
9
11 13 15 17
•
Numero de capas: 3
•
Neuronas por capa: 2 - 3 - 1
•
Error de entrenamiento: 0.101299 de 0.05
•
Gradiente final: 0.0484528 de 1e-010
•
Numero de iteraciones: 60000
•
Funciones por capa: Purelin – Logsig - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,2000
1,0000
0,8000
0,6000
0,4000
d
0,2000
traingda
0,0000
-0,2000
1
3
5
7
9
11 13 15 17
-0,4000
-0,6000
-0,8000
Grafica del error (datos de validación)
traingda
0,2000
0,0000
1
3
5
7
9
11
13 15
17
-0,2000
-0,4000
-0,6000
-0,8000
-1,0000
Traingdx
traingda
•
Numero de capas: 3
•
Neuronas por capa: 2 - 3 - 1
•
Error de entrenamiento: 0.0985181 de 0.05
•
Gradiente final: 0.0912678 de 1e-010
•
Numero de iteraciones: 60000
•
Funciones por capa: Purelin – Logsig - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,2000
1,0000
0,8000
0,6000
d
0,4000
traingdx
0,2000
0,0000
-0,2000
1
3
5
7
9
11 13 15 17
-0,4000
Grafica del error (datos de validación)
traingdx
0,6000
0,4000
0,2000
0,0000
-0,2000
-0,4000
-0,6000
-0,8000
-1,0000
-1,2000
Trainrp
1
3
5
7
9
11
13
15
17
traingdx
•
Numero de capas: 3
•
Neuronas por capa: 2 - 3 - 1
•
Error de entrenamiento: 0.0831358 de 0.05
•
Gradiente final: 9.93196e-007 de 1e-010
•
Numero de iteraciones: 28202
•
Funciones por capa: Purelin – Logsig - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,2000
1,0000
0,8000
0,6000
d
0,4000
trainrp
0,2000
0,0000
-0,2000
1
3
5
7
9
11 13 15 17
-0,4000
Grafica del error (datos de validación)
trainrp
0,6000
0,4000
0,2000
0,0000
-0,2000
-0,4000
-0,6000
-0,8000
-1,0000
Traincgf
1
3
5
7
9
11
13
15
17
trainrp
•
Numero de capas: 3
•
Neuronas por capa: 2 - 3 - 1
•
Error de entrenamiento: 0.0879971 de 0.05
•
Gradiente final: 0.000294713 de 1e-010
•
Numero de iteraciones: 1038
•
Funciones por capa: Purelin – Logsig - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,2000
1,0000
0,8000
0,6000
d
0,4000
traincgf
0,2000
0,0000
-0,2000
1
3
5
7
9
11 13 15 17
-0,4000
Grafica del error (datos de validación)
traincgf
0,6000
0,4000
0,2000
0,0000
-0,2000
-0,4000
-0,6000
-0,8000
-1,0000
Traincgb
1
3
5
7
9
11
13
15
17
traincgf
•
Numero de capas: 3
•
Neuronas por capa: 2 - 2 - 1
•
Error de entrenamiento: 0.101227 de 0.05
•
Gradiente final: 6.56347e-006 de 1e-010
•
Numero de iteraciones: 77
•
Funciones por capa: Purelin – Logsig - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,2000
1,0000
0,8000
0,6000
d
0,4000
traincgb
0,2000
0,0000
-0,2000
1
3
5
7
9
11 13 15 17
-0,4000
Grafica del error (datos de validación)
traincgb
1,0000
0,8000
0,6000
0,4000
0,2000
0,0000
-0,2000
-0,4000
-0,6000
-0,8000
-1,0000
Trainscg
traincgb
1
3
5
7
9
11
13
15
17
•
Numero de capas: 3
•
Neuronas por capa: 2 - 3 - 1
•
Error de entrenamiento: 0.0879377 de 0.05
•
Gradiente final: 9.64971e-007 de 1e-010
•
Numero de iteraciones: 4211
•
Funciones por capa: Purelin – Logsig - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,2000
1,0000
0,8000
0,6000
d
0,4000
trainscg
0,2000
0,0000
-0,2000
1
3
5
7
9
11 13 15 17
-0,4000
Grafica del error (datos de validación)
trainscg
0,6000
0,4000
0,2000
0,0000
-0,2000
-0,4000
-0,6000
-0,8000
-1,0000
Trainbfg
1
3
5
7
9
11
13
15
17
trainscg
•
Numero de capas: 3
•
Neuronas por capa: 2 - 3 - 1
•
Error de entrenamiento: 0.101227 de 0.05
•
Gradiente final: 4.09674e-007 de 1e-010
•
Numero de iteraciones: 67
•
Funciones por capa: Purelin – Logsig - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,2000
1,0000
0,8000
0,6000
d
0,4000
trainbgf
0,2000
0,0000
-0,2000
1
3
5
7
9
11 13 15 17
-0,4000
Grafica del error (datos de validación)
trainbfg
1,0000
0,8000
0,6000
0,4000
0,2000
0,0000
-0,2000
-0,4000
-0,6000
-0,8000
-1,0000
Trainoss
trainbfg
1
3
5
7
9
11
13
15
17
•
Numero de capas: 3
•
Neuronas por capa: 2 -3 - 1
•
Error de entrenamiento: 0.101227 de 0.05
•
Gradiente final: 8.12267e-007 de 1e-010
•
Numero de iteraciones: 546
•
Funciones por capa: Purelin – Logsig - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,2000
1,0000
0,8000
0,6000
d
0,4000
trainoss
0,2000
0,0000
-0,2000
1
3
5
7
9
11 13 15 17
-0,4000
Grafica del error (datos de validación)
trainoss
1,0000
0,8000
0,6000
0,4000
0,2000
0,0000
-0,2000
-0,4000
-0,6000
-0,8000
-1,0000
Trainml
trainoss
1
3
5
7
9
11
13
15
17
•
Numero de capas: 3
•
Neuronas por capa: 2 - 3 - 1
•
Error de entrenamiento: 0.0874688 de 0.05
•
Gradiente final: 0.000846157 de 1e-010
•
Numero de iteraciones: 3377
•
Funciones por capa: Purelin – Logsig - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,2000
1,0000
0,8000
0,6000
d
0,4000
trainlm
0,2000
0,0000
-0,2000
1
3
5
7
9
11 13 15
17
-0,4000
Grafica del error (datos de validación)
trainlm
0,6000
0,4000
0,2000
0,0000
-0,2000 1
3
5
7
9
11 13
15
17
-0,4000
-0,6000
-0,8000
-1,0000
Respuestas obtenidas con la simulación de la red:
trainlm
trainlm
-0,2
-0,2
-0,2
-0,1
-0,2
-0,2
-0,3
-0,1
-0,2
-0,2
-0,2
-0,2
-0,2
-0,2
-0,2
0,3
0,0
0,0
-0,1
0,0
0,1
0,1
0,0
0,1
0,0
0,0
0,1
0,0
-0,2
-0,2
-0,3
-0,1
-0,2
-0,2
-0,2
-0,2
-0,2
-0,2
-0,2
0,0
0,0
0,0
0,0
0,0
0,1
0,1
0,0
0,1
0,0
0,0
0,1
0,4
-0,1
-0,1
-0,2
0,0
-0,2
-0,2
-0,1
-0,2
-0,1
-0,1
-0,2
0,1
-0,1
-0,2
-0,2
-0,1
-0,2
-0,2
-0,2
-0,2
-0,2
-0,2
-0,2
0,5
0,1
0,1
0,1
0,1
0,1
0,1
0,1
0,1
0,1
0,1
0,1
0,0
-0,1
-0,1
-0,1
0,0
-0,1
-0,1
-0,1
-0,1
-0,1
-0,1
0,1
0,6
0,1
0,2
0,1
0,1
0,1
0,1
0,2
0,1
0,2
0,2
0,1
0,6
-0,1
-0,1
-0,2
0,0
-0,2
-0,2
-0,1
-0,2
-0,1
-0,1
-0,2
0,6
0,2
0,2
0,1
0,1
0,1
0,1
0,2
0,1
0,2
0,2
0,1
0,5
0,2
0,2
0,1
0,1
0,1
0,1
0,2
0,1
0,2
0,2
0,1
0,3
0,1
0,2
0,1
0,1
0,1
0,1
0,2
0,1
0,2
0,2
0,1
1,0
0,1
0,2
0,1
0,1
0,1
0,1
0,2
0,1
0,2
0,2
0,1
-0,1
0,0
0,1
0,0
0,0
0,1
0,1
0,1
0,1
0,1
0,1
0,1
-0,3
0,4
0,5
-0,6
0,1
0,1
0,1
0,5
0,1
0,5
0,5
0,1
s
-0,3
-0,2
trainos
-0,3
-0,2
f
trainbg
-0,2
-0,2
g
-0,3
-0,2
trainsc
-0,2
-0,2
b
-0,2
-0,1
traincg
traincg
-0,2
-0,3
f
trainrp
-0,4
-0,2
x
-0,3
-0,2
a
traingd
traingd
traingd
traingd
-0,3
0,2
m
d
-0,2
Al hacer un análisis se del error cuadrático generado por matlab, se ven en la figura
4.3 la salida deseada con las 2 funciones que mas se acercaron al modelo.
1,2
1,0
0,8
0,6
d
0,4
0,2
traingda
0,0
-0,2
1
3
5
7
9
11
13
15
17
traingdx
-0,4
-0,6
-0,8
Figura 4.3: Grafica de valores resultantes de iterar la serie 2-3-1
TOPOLOGÍA 2 - 2 - 2 -1
Traingd
•
Numero de capas: 4
•
Neuronas por capa: 2 – 2 - 2 - 1
•
Error de entrenamiento: 0.083368 de 0.05
•
Gradiente final: 0.00075513 de 1e-010
•
Numero de iteraciones: 60000
•
Funciones por capa: Purelin – Tansig – Purelin - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,20
1,00
0,80
0,60
d
0,40
traingd
0,20
0,00
-0,20
1
3
5
7
9
11 13 15 17
-0,40
Grafica del error (datos de validación)
traingd
0,6000
0,4000
0,2000
0,0000
-0,2000 1
3
5
7
9 11 13 15 17
traingd
-0,4000
-0,6000
-0,8000
-1,0000
Traingdm
•
Numero de capas: 4
•
Neuronas por capa: 2 – 2 - 2 - 1
•
Error de entrenamiento: 0.0835231 de 0.05
•
Gradiente final: 0.000282096 de 1e-010
•
Numero de iteraciones: 60000
•
Funciones por capa: Purelin – Tansig – Purelin - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,20
1,00
0,80
0,60
d
0,40
traingdm
0,20
0,00
-0,20
1
3
5
7
9
11 13 15 17
-0,40
Grafica del error (datos de validación)
traingdm
0,6000
0,4000
0,2000
0,0000
-0,2000 1
3
5
7 9 11 13 15 17
traingdm
-0,4000
-0,6000
-0,8000
-1,0000
Traingda
•
Numero de capas: 4
•
Neuronas por capa: 2 - 2 - 2 - 1
•
Error de entrenamiento: 0.0891906 de 0.05
•
Gradiente final: 0.173402 de 1e-010
•
Numero de iteraciones: 60000
•
Funciones por capa: Purelin – Tansig – Purelin - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,20
1,00
0,80
0,60
d
0,40
traingda
0,20
0,00
-0,20
1
3
5
7
9
11 13 15 17
-0,40
Grafica del error (datos de validación)
traingda
0,6000
0,4000
0,2000
0,0000
-0,2000 1
3
5
7
9 11 13 15 17
traingda
-0,4000
-0,6000
-0,8000
-1,0000
Traingdx
•
Numero de capas: 4
•
Neuronas por capa: 2 – 2 - 2 - 1
•
Error de entrenamiento: 0.0850742 de 0.05
•
Gradiente final: 0.127728 de 1e-010
•
Numero de iteraciones: 60000
•
Funciones por capa: Purelin – Tansig – Purelin – Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,20
1,00
0,80
0,60
d
0,40
traingdx
0,20
0,00
-0,20
1
3
5
7
9
11 13 15 17
-0,40
Grafica del error (datos de validación)
traingdx
0,6000
0,4000
0,2000
0,0000
-0,2000
1
3
5
7 9 11 13 15 17
traingdx
-0,4000
-0,6000
-0,8000
-1,0000
Trainrp
•
Numero de capas: 4
•
Neuronas por capa: 2 - 2 - 2 - 1
•
Error de entrenamiento: 0.0789043 de 0.05
•
Gradiente final: 0.00281069 de 1e-010
•
Numero de iteraciones: 60000
•
Funciones por capa: Purelin – Tansig – Purelin - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,20
1,00
0,80
0,60
d
0,40
trainrp
0,20
0,00
-0,20
1
3
5
7
9
11 13 15 17
-0,40
Grafica del error (datos de validación)
trainrp
0,6000
0,4000
0,2000
0,0000
-0,2000 1
3
5
7
9 11 13 15 17
trainrp
-0,4000
-0,6000
-0,8000
-1,0000
Traincgf
•
Numero de capas : 4
•
Neuronas por capa: 2 - 2 - 2 - 1
•
Error de entrenamiento: 0.0847961 de 0.05
•
Gradiente final: 0.00064192 de 1e-010
•
Numero de iteraciones: 185
•
Funciones por capa: Purelin – Tansig – Purelin - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,20
1,00
0,80
0,60
d
0,40
traincgf
0,20
0,00
-0,20
1
3
5
7
9
11 13 15 17
-0,40
Grafica del error (datos de validación)
traincgf
0,8000
0,6000
0,4000
0,2000
0,0000
-0,2000 1
3
5
7
9 11 13 15 17
traincgf
-0,4000
-0,6000
-0,8000
-1,0000
Traincgb
•
Numero de capas: 4
•
Neuronas por capa: 2 - 2 - 2 - 1
•
Error de entrenamiento: 0.083838 de 0.05
•
Gradiente final: 0.00119069 de 1e-010
•
Numero de iteraciones: 135
•
Funciones por capa: Purelin – Tansig – Purelin - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,20
1,00
0,80
0,60
d
0,40
traincgb
0,20
0,00
-0,20
1
3
5
7
9
11 13 15 17
-0,40
Grafica del error (datos de validación)
traincgb
1,2000
1,0000
0,8000
0,6000
0,4000
0,2000
0,0000
-0,2000 1
-0,4000
-0,6000
-0,8000
-1,0000
traincgb
3
5
7
9 11 13 15 17
Trainscg
Numero de capas: 4
Neuronas por capa: 2 - 2 - 2 - 1
Error de entrenamiento: 0.0803516 de 0.05
Gradiente final: 8.18243e-007 de 1e-010
Numero de iteraciones: 1290
Funciones por capa: Purelin – Tansig – Purelin - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,20
1,00
0,80
0,60
d
0,40
trainscg
0,20
0,00
-0,20
1
3
5
7
9
11 13 15 17
-0,40
Grafica del error (datos de validación)
trainscg
0,6000
0,4000
0,2000
0,0000
-0,2000 1
3
5
7
9 11 13 15 17
trainscg
-0,4000
-0,6000
-0,8000
-1,0000
Trainbfg
•
Numero de capas: 4
•
Neuronas por capa: 2 - 2 - 2 - 1
•
Error de entrenamiento: 0.0803511 de 0.05
•
Gradiente final: 5.01321e-007 de 1e-010
•
Numero de iteraciones: 380
•
Funciones por capa: Purelin – Tansig – Purelin - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,20
1,00
0,80
0,60
d
0,40
trainbgf
0,20
0,00
-0,20
1
3
5
7
9
11 13 15 17
-0,40
Grafica del error (datos de validación)
trainbfg
0,6000
0,4000
0,2000
0,0000
-0,2000 1
3
5
7
9 11 13 15 17
trainbfg
-0,4000
-0,6000
-0,8000
-1,0000
Trainoss
Numero de capas: 4
Neuronas por capa: 2 -2 - 2 - 1
Error de entrenamiento: 0.0835118 de 0.05
Gradiente final: 7.71694e-007 de 1e-010
Numero de iteraciones: 2355
Funciones por capa: Purelin – Tansig – Purelin - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,20
1,00
0,80
0,60
d
0,40
trainoss
0,20
0,00
-0,20
1
3
5
7
9
11 13 15 17
-0,40
Grafica del error (datos de validación)
trainoss
0,6000
0,4000
0,2000
0,0000
-0,2000 1
3
5
7
9 11 13 15 17
trainoss
-0,4000
-0,6000
-0,8000
-1,0000
Trainml
•
Numero de capas: 4
•
Neuronas por capa: 2 - 2 - 2 - 1
•
Error de entrenamiento: 0.0788702 de 0.05
•
Gradiente final: 2.05572e-006 de 1e-010
•
Numero de iteraciones: 5503
•
Funciones por capa: Purelin – Tansig – Purelin - Tansig
Grafica de salida deseada & salida obtenida (datos de validación)
1,20
1,00
0,80
0,60
d
0,40
trainlm
0,20
0,00
-0,20
1
3
5
7
9
11 13 15 17
-0,40
Grafica del error (datos de validación)
trainlm
0,6000
0,4000
0,2000
0,0000
-0,2000 1
3
5
7
9 11 13 15 17
trainlm
-0,4000
-0,6000
-0,8000
-1,0000
d
traingd
traingdm
traingda
traingdx
trainrp
traincgf
traincgb
trainscg
trainbgf
trainoss
trainlm
Respuestas obtenidas con la simulación de la red:
-0,20
-0,25
-0,25
-0,14
-0,31
-0,22
-0,25
-0,26
-0,23
-0,23
-0,25
-0,22
0,25
-0,16
-0,16
-0,06
-0,21
-0,14
-0,17
-0,18
-0,13
-0,13
-0,15
-0,14
-0,14
-0,06
-0,06
0,05
-0,11
-0,06
-0,10
-0,12
-0,07
-0,08
-0,06
-0,06
0,30
0,02
0,02
0,12
-0,14
0,01
0,00
-0,01
-0,06
-0,06
0,03
0,01
0,04
-0,02
-0,02
0,09
0,07
-0,03
-0,06
-0,07
0,15
0,15
-0,02
-0,03
-0,03
0,07
0,07
0,15
-0,14
0,07
0,08
0,06
-0,06
-0,06
0,07
0,07
0,45
-0,03
-0,03
0,07
-0,15
-0,04
-0,07
-0,08
-0,07
-0,07
-0,03
-0,04
0,15
0,06
0,06
0,15
0,07
0,05
0,04
0,11
0,15
0,15
0,06
0,05
0,48
0,11
0,11
0,18
0,07
0,13
0,18
0,17
0,16
0,16
0,11
0,13
0,01
0,10
0,10
0,17
0,07
0,10
0,14
0,27
0,16
0,16
0,09
0,11
0,60
0,10
0,11
0,17
-0,08
0,11
0,16
0,14
0,15
0,05
0,10
0,11
0,58
0,09
0,09
0,17
0,07
0,09
0,10
0,43
0,1 6
0,16
0,09
0,09
0,56
0,14
0,14
0,19
0,07
0,21
0,38
0,70
0,16
0,16
0,13
0,22
0,49
0,14
0,14
0,19
0,07
0,21
0,37
0,67
0,16
0,16
0,13
0,21
0,32
0,13
0,14
0,19
0,07
0,19
0,34
0,54
0,16
0,16
0,13
0,20
1,00
0,13
0,13
0,18
0,07
0,16
0,26
0,28
0,16
0,16
0,12
0,16
-0,1
0,14
0,14
0,19
0,07
0,21
0,37
0,85
0,16
0,16
0,13
0,22
-0,3
0,14
0,14
0,19
0,07
0,20
0,38
0,35
0,16
0,16
0,13
0,21
Al hacer un análisis se del error cuadrático generado por matlab y de las graficas de
aproximación, se ven en la figura 4.2 la salida deseada con las 2 funciones que mas
se acercaron al modelo.
1,20
1,00
0,80
0,60
d
0,40
traincgf
0,20
traincgb
0,00
1
-0,20
3
5
7
9
11
13
15
17
-0,40
Figura 4.4: Grafica de valores resultantes de iterar la serie 2 - 2 - 2 - 1
Se pude observar que los modelos con mayor numero de capas parecen ajustar
mejor la curva del conjunto de validación debido que no describe totalmente el
comportamiento de la serie pero si encuentra puntos en los cuales coincide la serie,
eso da a suponer que en un momento dado y con muchos mas datos de
entrenamiento se puede ajustar un modelo que sin estar sobrentrenado halle el
modelo que se ajuste con mucho menor error a la serie.
ANEXOS
ANEXO 1: CONSUMO DE GASOLINA ACPM (1998 – 2003)
ACPM
BPM*
98 E
1.801.100
F
1.716.876
M
1.835.944
A
1.908.060
M
1.851.072
J
1.749.090
JL
1.952.132
A
1.807.238
S
1.838.280
O
1.895.929
N
1.507.920
D
1.795.737
99 E
1.561.129
F
1.522.108
M
1.787.832
A
1.541.850
M
1.615.100
J
1.411.800
Jl
1.700.505
A
1.706.674
S
1.646.100
O
1.613.798
N
1.758.090
D
1.692.259
00 E
1.744.773
F
1.633.716
M
1.859.008
A
1.687.050
M
1.686.307
J
1.917.930
JL
1.816.042
A
1.949.931
S
1.945.260
O
1.937.314
N
1.942.890
D
1.962.362
01 E
1.950.861
F
1.768.200
M
2.087.385
A
1.928.220
M
1.869.021
J
1.897.830
Jl
1.534.810
A
1.721.244
S
1.619.910
O
1.964.346
N
1.733.430
D
1.793.784
02 E
1.563.196
F
1.544.717
M
1.568.947
A
1.654.625
M
1.600.368
J
1.548.217
Jl
1.705.590
A
1.808.208
S
1.759.327
O
1.953.194
N
1.783.266
D
1.975.678
03 E
1.861.458
F
1.833.307
M
2.039.511
A
1.910.577
M
2.052.503
J
1.851.952
Jl
2.104.383
A
2.097.689
S
2.089.104
O
2.059.732
N
1.984.912
D
2.280.121
04 E
ANEXO 2: SERIE ESCALADA EN EL RANGO [-1,1] CON UNA ENTRADA Y UNA
SALIDA.
x1
d
0,1033
0,2973
0,0231
0,1430
0,2973
0,0231
0,1430
0,0118
0,0118 0,2231
0,2231 0,2445
0,2445 0,0892
0,0892 0,0177
0,0177 0,1151
0,1151 0,7786
0,7786 0,1157
0,1157 0,6561
0,6561 0,7459
0,7459 0,1339
0,1339 0,7005
0,7005 0,5317
0,5317 1,0000
1,0000 0,3350
0,3350 0,3208
0,3208 0,4603
0,4603 0,5347
0,5347 0,2024
-
0,2024
0,3540
0,2331
0,4889
0,3540
0,2331
0,4889
0,0301
0,3660
0,0301
0,3660 0,3677
0,3677 0,1658
0,1658 0,0689
0,0689 0,2395
0,2395 0,2287
0,2287 0,2104
0,2104 0,2233
0,2233 0,2681
0,2681 0,2416
0,2416 0,1791
0,1791 0,5561
0,5561 0,1895
0,1895 0,0531
0,0531 0,1195
0,1195 0,7167
0,7167 0,2873
0,2873 0,5207
0,5207 0,2727
0,2727 0,2592
0,2592 0,1202
0,1202 0,6513
0,6513 0,6939
0,6939 0,6380
0,6380
0,4407
0,5657
0,6858
0,3233
0,0870
0,1995
0,4407
0,5657
0,6858
0,3233
0,0870
0,1995
0,2470
0,2470 0,1444
0,1444 0,2988
0,2988 0,0357
0,0357 0,0291
0,0291 0,4458
0,4458 0,1488
0,1488 0,4757
0,4757 0,0138
0,0138 0,5952
0,5952 0,5798
0,5798 0,5600
0,5600 0,4924
0,4924 0,3200
0,3200 1,0000
1,0000 0,1033
ANEXO 3: SERIE ESCALADA EN EL RANGO [-1,1] CON DOS ENTRADAS Y
UNA SALIDA.
x1
x2
d
0,1033 0,2973 0,0231
0,2973 0,0231 0,1430
0,0231 0,1430 0,0118
0,1430 0,0118 0,2231
0,0118 0,2231 0,2445
0,2231 0,2445 0,0892
0,2445 0,0892 0,0177
0,0892 0,0177 0,1151
0,0177 0,1151 0,7786
0,1151 0,7786 0,1157
0,7786 0,1157 0,6561
0,1157 0,6561 0,7459
0,6561 0,7459 0,1339
0,7459 0,1339 0,7005
0,1339 0,7005 0,5317
0,7005 0,5317 1,0000
0,5317 1,0000 0,3350
1,0000 0,3350 0,3208
0,3350 0,3208 0,4603
0,3208 0,4603 0,5347
0,4603 0,5347 0,2024
0,5347 0,2024 0,3540
-
0,2024
0,3540
0,2331
0,4889
0,0301
0,3660
0,3677
0,1658
0,0689
0,2395
0,2287
0,2104
0,2233
0,3540 0,2331
0,2331 0,4889
0,4889 0,0301
0,0301 0,3660
0,3660 0,3677
0,3677 0,1658
0,1658 0,0689
0,0689 0,2395
0,2395
0,2287
0,2104
0,2233
0,2681
0,2287
0,2104
0,2233
0,2681
0,2416
0,2681 0,2416 0,1791
0,2416 0,1791 0,5561
0,1791 0,5561 0,1895
0,5561 0,1895 0,0531
0,1895 0,0531 0,1195
0,0531 0,1195 0,7167
0,1195 0,7167 0,2873
0,7167 0,2873 0,5207
0,2873 0,5207 0,2727
0,5207 0,2727 0,2592
0,2727 0,2592 0,1202
0,2592 0,1202 0,6513
0,1202 0,6513 0,6939
0,6513 0,6939 0,6380
-
0,6939
0,6380
0,4407
0,5657
0,6858
0,3233
0,0870
0,1995
0,6380
0,4407
0,5657
0,6858
0,3233
0,0870
0,1995
0,4407
0,5657
0,6858
0,3233
0,0870
0,1995
0,2470
0,2470 0,1444
0,2470 0,1444 0,2988
0,1444 0,2988 0,0357
0,2988 0,0357 0,0291
0,0357 0,0291 0,4458
0,0291 0,4458 0,1488
0,4458 0,1488 0,4757
0,1488 0,4757 0,0138
0,4757 0,0138 0,5952
0,0138 0,5952 0,5798
0,5952 0,5798 0,5600
0,5798 0,5600 0,4924
0,5600 0,4924 0,3200
0,4924 0,3200 1,0000
0,3200 1,0000 0,1033
1,0000 0,1033 0,2973
ANEXO 4: SERIE ESCALADA EN EL RANGO [-1,1] CON TRES ENTRADAS Y
UNA SALIDA.
x1
x2
x3
d
0,1033 0,2973 0,0231 0,1430
0,2973 0,0231 0,1430 0,0118
0,0231 0,1430 0,0118 0,2231
0,1430 0,0118 0,2231 0,2445
0,2231
0,0892
0,0118
0,2445
0,2231 0,2445 0,0892 0,0177
0,2445 0,0892 0,0177 0,1151
0,0892 0,0177 0,1151 0,7786
0,0177 0,1151 0,7786 0,1157
0,1151 0,7786 0,1157 0,6561
0,7786 0,1157 0,6561 0,7459
0,1157 0,6561 0,7459 0,1339
0,6561 0,7459 0,1339 0,7005
0,7459 0,1339 0,7005 0,5317
0,1339 0,7005 0,5317 1,0000
0,7005 0,5317 1,0000 0,3350
0,5317 1,0000 0,3350 0,3208
1,0000 0,3350 0,3208 0,4603
0,3350 0,3208 0,4603 0,5347
0,3208 0,4603 0,5347 0,2024
0,4603 0,5347 0,2024 0,3540
0,5347 0,2024 0,3540 0,2331
0,2024
0,3540
0,2331
0,4889
0,0301
0,3660
0,3677
0,1658
0,0689
0,2395
0,2287
0,2104
0,3540 0,2331 0,4889
0,2331 0,4889 0,0301
0,4889 0,0301 0,3660
0,0301 0,3660 0,3677
0,3660 0,3677 0,1658
0,3677 0,1658 0,0689
0,1658 0,0689 0,2395
0,0689 0,2395 0,2287
0,2395
0,2287
0,2104
0,2233
0,2287
0,2104
0,2233
0,2681
0,2104
0,2233
0,2681
0,2416
0,2233 0,2681 0,2416 0,1791
0,2681 0,2416 0,1791 0,5561
0,2416 0,1791 0,5561 0,1895
0,1791 0,5561 0,1895 0,0531
0,5561 0,1895 0,0531 0,1195
0,1895 0,0531 0,1195 0,7167
0,0531 0,1195 0,7167 0,2873
0,1195 0,7167 0,2873 0,5207
0,7167 0,2873 0,5207 0,2727
0,2873 0,5207 0,2727 0,2592
0,5207 0,2727 0,2592 0,1202
0,2727 0,2592 0,1202 0,6513
0,2592 0,1202 0,6513 0,6939
0,1202 0,6513 0,6939 0,6380
0,6513
0,6939
0,6380
0,4407
0,5657
0,6858
0,3233
0,0870
0,1995
0,2470
0,1444
0,2988
0,0357
0,0291
0,4458
0,1488
0,4757
0,0138
0,5952
0,5798
0,5600
0,6939
0,6380
0,4407
0,5657
0,6858
0,3233
0,0870
0,1995
0,6380
0,4407
0,5657
0,6858
0,3233
0,0870
0,1995
0,4407
0,5657
0,6858
0,3233
0,0870
0,1995
0,4458
0,1488
0,4757
0,0138
0,5952
0,5798
0,5600
0,4924
0,1488
0,4757
0,0138
0,5952
0,5798
0,5600
0,4924
0,3200
0,4757
0,0138
0,5952
0,5798
0,5600
0,4924
0,3200
1,0000
0,1033
0,2973
0,0231
0,2470
0,2470 0,1444
0,2470 0,1444 0,2988
0,1444 0,2988 0,0357
0,2988 0,0357 0,0291
0,0357 0,0291 0,4458
0,0291 0,4458 0,1488
0,4924 0,3200 1,0000
0,3200 1,0000 0,1033
1,0000 0,1033 0,2973
CONCLUSIONES
1. Gracias a las características de flexibilidad y adaptabilidad las Redes
Neuronales Artificiales nos presentan una alternativa, no lineal, para analizar y
predecir las series de tiempo.
2. El problema de la predicción es un tema que ha abarcado muchos escenarios de
la vida diaria, como se vio, las redes neuronales son una herramienta poderosa
para el análisis de estos fenómenos, la aparente fiabilidad que tiene debido a los
muchos ejemplos de predicción en los cuáles se aplica, da seguridad suficiente
para creer en los resultados, en algunos casos se puede llegar a tener mas
fiabilidad en las RNA que en los métodos clásicos de predicción.
3. La predicción través de redes neuronales al parecer es un método totalmente
paralelo a los métodos estadísticos clásicos para la predicción, pero ha sido
mediante la estadística que las redes neuronales se han fortalecido como
métodos estándar, en este trabajo se expone el modelo del aproximador general
de funciones, esto se demuestra a través de métodos y teoremas estadísticos.
4. El numero de datos de entrenamiento y de datos de validación condiciona en
gran forma los resultados que se obtienen cuando se entrena una red neuronal,
si se tiene un gran número de datos se debe controlar que no haya sobre
entrenamiento, pero al tener pocos, no se sabe claramente lo que se pude llegar
a obtener, la reglas expuestas en el capitulo 2 sobre como escoger un optimo
número de datos de validación intenta solucionar este problema, pero aun así
este problema es resuelto mas basado en la experiencia de éxito de otros
modelos en problema similares, por lo tanto las redes neuronales siempre van a
tener una parte aleatoria que pude llegar a condicionar a la parte teórica.
BIBLIOGRAFIA
[1] Chao, Lincoln L. (1975) Estadística para ciencias sociales y administrativas.
Bogota: McGraw-Hill.
[2] George C. Canavos. (1988) Probabilidad y Estadística Aplicaciones y Métodos.
Mexico: Mc Graw Hill
[3] Álvaro M. García. (2000) Series de Tiempo. Bogota: Pontificia Universidad
Javeriana, Facultades Economía y Administración.
[4] Emilia Correa Moreno. (2000) Series de Tiempo Conceptos Básicos. Medellín:
Universidad Nacional de Colombia Facultad Ciencias Departamento Matemáticas
[5] Iglesias Z. Pilar. (1988). Elementos de series de tiempo.
[6] Enciclopedia Libre Wikipedia (Online). España 2005.
http://es.wikipedia.org/wiki/Categor%C3%ADa:Estad%C3%ADstica
[7] Hospital Ramón y Cajal (Online). Estadistica. Madrid España. 1996
http://www.hrc.es/bioest/M_docente.html#tema2
[8] Jorge Ludlow Wiechers. Desarrollo Latino. Instrumentos de trabajo, Procesos
Estacionarios.
http://www.desarrollolatino.org/index.htm
[9] Carlos E. Mendoza Durán. Cursos (Online). Probabilidad y Estadística.
http://www.mor.itesm.mx/~cmendoza/ma835/ma83511.html
[10] Raúl Sánchez Vítores . Fac - Mac.
Revista (Online).
Sistemas de
Reconocimiento Facial. Julio, 2004.
http://www.faq-mac.com/mt/archives/009001.php
[11] Cursos (Online). Ingenierías. Pronósticos.
http://www.prodigyweb.net.mx/lmfs/ingenierias/pronósticos/pronósticos.html
[12] DEL BRIO, Martín. Redes Neuronales y Sistemas Difusos. Universidad de
Zaragoza. España: Alfaomega 2002, 399p.
[13] GIARDINA, Daniel. Redes Neuronales: Conceptos Básicos y Aplicaciones.
Rosario, Argentina, 2001, 55 p. Trabajo de Grado (Ingeniero Electrónico).
Universidad Nacional de Rosario. Facultad de Ciencias Exactas, Ingeniería y
Agrimensura.
[14] ANDINA, Diego. Tutorial de Redes Neuronales (Online). Universidad Politécnica
de Madrid. España. Noviembre de 2001.
http://www.gc.ssr.upm.es/inves/neural/ann2/anntutorial.html
[15] KASABOV, Nikola. Foundations of Neural Networks, Fuzzy Systems, and
Knowledge Engineering. Massachusetts Institute of Technology, 1996. 570p.
[16] KROSE, Ben. An Introduction to Neural Networks. The University of Amsterdam.
1996.
[17] CAVUTO, David. An Exploration And Development Of Current Artificial Neural
Network Theory And Applications With Emphasis On Artificial Life. Albert Nerken
School Of Engineering, 1997. 126p.
[18] UNIVERSIDAD TECNOLOGICA DE PEREIRA. Tutorial de Redes Neuronales
(Online). Colombia. 2000. http://ohm.utp.edu.co/neuronales/
[19] Toolbox Matlab v. 6.5. Neural Network Toolbox. Backpropagation. Junio 2002
Descargar