Subido por Hernan A.M

REDES-NEURONALES-ARTIFICIALES-ACERCAMIENTO-TEÓRICO-Y-PRÁCTICO-EN-MATLAB

Anuncio
UNIVERSIDAD TÉCNICA FEDERICO SANTA MARÍA
SEDE DE CONCEPCIÓN – REY BALDUINO DE BÉLGICA
REDES NEURONALES ARTIFICIALES,
ACERCAMIENTO TEÓRICO Y PRÁCTICO EN MATLAB
Memoria
presentada
de
al
trabajo
de
departamento
Electrónica e Informática.
Alumno:
Gonzalo Echeverría Bustos
Profesor Guía:
Rodrigo Méndez Leal
2019
título
de
I
RESUMEN
Debido a la alta competitividad industrial y las constantes demandas de optimizar,
controlar y supervisar procesos de forma más inteligente, nacen varios sistemas basados
en lo que se conoce como inteligencia artificial, por sus características de auto-aprendizaje
y constantes evoluciones autónomas.
Uno de estos métodos que se considera como inicial en esta rama del conocimiento
se denomina redes neuronales, del cual se trabajará a continuación sus aspectos internos
más relevantes para saber de forma completa, cómo se inspiraron de un sistema biológico
complejo, como es el nervioso, para desarrollar un método algorítmico eficiente, ordenado
y multidisciplinario. Para esto se mezclan disciplinas como la matemática estadística,
donde se utiliza cálculo con derivadas parciales y modelos de regresión aplicados a
problemas reales combinados con algoritmos de auto aprendizaje y una arquitectura de
conexiones.
Para la simulación de redes neuronales existen varios programas, cada uno destinado
de forma más eficiente para una tarea en específico. En este trabajo se hará uso del
software Matlab, el cual es muy intuitivo para crear redes neuronales y enseña de forma
clara todos los parámetros que se deben tener en cuenta para la creación de sistemas de
este tipo.
II
ÍNDICE DE MATERIAS
INTRODUCCIÓN ............................................................................................................... 1
Objetivos
…………………………………………………………………………..2
CAPÍTULO 1: HISTORIA Y BIOLOGÍA NEURONAL................................................. 3
1.1. HISTORIA DE LAS REDES NEURONALES........................................................... 3
1.1.1. Redes neuronales en la actualidad.................................................................... 7
1.2. INSPIRACIÓN BIOLÓGICA ..................................................................................... 8
1.2.1. Tipos de neuronas ............................................................................................. 9
1.2.2. Función de activación biológica..................................................................... 11
1.2.3. Estructura neuronal......................................................................................... 15
CAPÍTULO 2: REDES NEURONALES ARTIFICIALES ............................................ 16
2.1. MODELO NEURONAL ............................................................................................ 17
2.1.1. Modelo de Regresión lineal............................................................................ 19
2.1.2. Método de cuadrados ordinarios. ................................................................... 21
2.1.3. Funciones de Salida ........................................................................................ 24
2.1.4. Modelo neuronal general................................................................................ 27
2.1.5. Modelo neuronal no lineal.............................................................................. 28
2.2. ARQUITECTURA DE LAS REDES NEURONALES ............................................ 31
2.2.1. El perceptrón multicapa ................................................................................. 34
2.2.2. xOR con red multicapa ................................................................................... 36
2.2.3. Recurrent Networks ........................................................................................ 40
2.2.4. Ejemplo ilustrativo ......................................................................................... 43
2.2.5. Hamming network .......................................................................................... 48
2.3. REGLA DE APRENDIZAJE .................................................................................... 55
2.3.1. Conjuntos de entrenamiento ........................................................................... 56
2.3.2. Límite de decisión .......................................................................................... 56
2.3.3. Regla de aprendizaje del perceptrón .............................................................. 59
2.3.4. Backpropagation ............................................................................................. 66
III
CAPÍTULO 3: EJEMPLOS PRÁCTICOS ...................................................................... 72
3.1. RECONOCIMIENTO DE CARACTERES NUMÉRICOS ..................................... 73
3.1.1. Entrenamiento de la red.................................................................................. 74
3.1.2. Test de la red neuronal creada ........................................................................ 83
3.2. PREDICCIÓN DEL COMPORTAMIENTO DE UN MOTOR DC ........................ 86
3.2.1. Tomando datos en la planta de control. ......................................................... 86
3.2.2. Entrenando la red neuronal. ........................................................................... 88
3.2.3. Consideraciones al entrenar una Red ............................................................. 97
CONCLUSIONES Y RECOMENDACIONES.............................................................. 100
BIBLIOGRAFÍA Y FUENTES DE LA INFORMACIÓN ............................................ 101
IV
ÍNDICE DE FIGURAS
Figura 1-1. Estructura de una Neurona Biológica .................................................................. 8
Figura 1-2. Tipos de neurona ................................................................................................ 10
Figura 1-3. Sinapsis entre el terminal axonico de una neurona y déndrico de la otra ......... 11
Figura 1-4. Iones de activación dentro y fuera de una membrana celular. .......................... 12
Figura 1-5. Potencial de acción en el proceso sináptico ...................................................... 13
Figura 1-6. Potencial de activación ...................................................................................... 14
Figura 1-7. Represtación morfológica de neuronas del córtex auditivo .............................. 16
Figura 2-1. Neurona Estándar ............................................................................................... 17
Figura 2-2. Interacción entre una neurona Presináptica y otra postsináptica ...................... 18
Figura 2-3. Diagrama de dispersión con relación rectilinea entre el tiempo y el volumen . 20
Figura 2-4. Cálculo del error medio de la gráfica de dispersión .......................................... 21
Figura 2-5. Grafica de salida de una neurona “Hard Limit” ................................................ 24
Figura 2-6. Comparativa entre compuerta lógica NAND y Nodo neuronal ........................ 26
Figura 2-7. Modelo genérico de una neurona estándar ........................................................ 27
Figura 2-8. Diseño de una red neuronal con funciones de transferencia de tipo lineal ...... 28
Figura 2-9. Diseño de red neuronal con función de transferencia sigmoidal ...................... 29
Figura 2-10. Modelo del perceptrón simple ......................................................................... 31
Figura 2-11. NAND sobre el plano ...................................................................................... 32
Figura 2-12. Grafica de una compuerta xOR sobre el plano................................................ 33
Figura 2-13. Modelo del perceptrón multicapa .................................................................... 34
Figura 2-14. Simulación de una compuerta xOR con redes neuronales .............................. 36
Figura 2-15. Grafica de la red neuronal simulando una compuerta xOR ............................ 39
Figura 2-16. Bloque de retardo (Delay)................................................................................ 41
Figura 2-17. Bloque Integrador ............................................................................................ 42
Figura 2-18. Red neuronal de capa recurrente...................................................................... 42
Figura 2-19. Prototipo de una red neuronal clasificadora de frutas ..................................... 44
Figura 2-20. Plano 3D de vectores ....................................................................................... 45
Figura 2-21. Simulación de un perceptrón clasificador ....................................................... 47
Figura 2-22. Simulación de un perceptrón clasificador ....................................................... 48
Figura 2-23. Red Neuronal Hamming para reconocimiento de patrones ............................ 49
Figura 2-24. Simulación de un perceptrón clasificador Hamming ...................................... 53
Figura 2-25. Simulación de un perceptrón clasificador Hamming ...................................... 54
Figura 2-26. Nodo neuronal de 2 entradas con Bias ............................................................ 56
Figura 2-27. Límite de decisión para una neurona de 2 entradas......................................... 58
Figura 2-28. Conjunto de vectores de entrada x en el plano ................................................ 59
V
Figura 2-29. Posibles límites de decisión para la separación de clases. .............................. 60
Figura 2-30. Límite de decisión para W inicial ................................................................... 61
Figura 2-31. Modificación del límite de decisión según la regla de aprendizaje ................ 62
Figura 2-32. Límite de decisión para la red neuronal........................................................... 64
Figura 2-33. Secuencia de entrenamiento de una red neuronal sin Retro Propagación....... 66
Figura 2-34. Secuencia de entrenamiento de una red con Retro Propagación..................... 67
Figura 3-1. Barra de Navegación Matlab ............................................................................. 75
Figura 3-2. Ventana creación de la variable de entradas nueva ........................................... 76
Figura 3-3. Tabla de valores objetivo en Presentada............................................................ 76
Figura 3-4. Ventana al ejecutar el comando "nnstart".......................................................... 77
Figura 3-5. Ventana para la selección de valores de entrenamiento (Entrada/Objetivo) .... 78
Figura 3-6. Selección del porcentaje de datos para los pasos del entrenamiento de la red. 79
Figura 3-7. Ventana de selección del número de capas ocultas y arquitectura de la red..... 80
Figura 3-8. Ventana del entrenamiento de la red y las diferentes caracteristicas ................ 81
Figura 3-9. Grafico Entropía Cruzada de error vs Épocas ................................................... 82
Figura 3-10. Ventana de comandos, con resultado del test. ................................................. 83
Figura 3-11. Ventana de comandos, con resultado del segundo test. .................................. 84
Figura 3-12. Ventana de comandos, con resultado del tercer test........................................ 85
Figura 3-13 Esquema planta de control para un Motor DC ................................................. 86
Figura 3-14. Grafica respuesta de un Motor DC .................................................................. 87
Figura 3-15. Ventana Comandos para separar Variables ..................................................... 87
Figura 3-16. Esquema de la arquitectura básica del funcionamiento de la red.................... 89
Figura 3-17. Selección de los datos de muestreo para diferentes etapas de entrenamiento 89
Figura 3-18. Grafica por puntos de la entrada/salida de respuesta del Motor DC ............... 90
Figura 3-19. Zoom de la gráfica de respuesta inicial al escalón aplicado ........................... 90
Figura 3-20. Grafica Error cuadrático medio vs Épocas ...................................................... 91
Figura 3-21. Cuadro con resultados del entrenamiento........................................................ 91
Figura 3-22. Ventana de comandos netc .............................................................................. 92
Figura 3-23. Arquitectura de la Red Neuronal Terminada................................................... 92
Figura 3-24. Esquema del funcionamiento de la red creada ................................................ 93
Figura 3-25. Graficas comparativas de la respuesta de la red .............................................. 94
Figura 3-26. Acercamiento de la gráfica real vs respuesta predicha ................................... 94
Figura 3-27. Gráfica de los datos recolectados (Entrada y Salida) ...................................... 95
Figura 3-28. Gráficas comparativas de la respuesta real vs la predicción de la red ............ 96
Figura 3-29. Superposición de la respuesta real del motor y respuesta de la red Neuronal 96
Figura 3-30. Respuesta predatoria de la red ......................................................................... 97
Figura 3-31. Ejemplo de la predicción de una red mal entrenada........................................ 98
VI
Figura 3-32. Acercamiento de la respuesta oscilatoria erratica de la red ............................ 99
Figura 3-33. Grafica con exceso de muestras y ruido .......................................................... 99
VII
ÍNDICE DE TABLAS
Tabla 2-1. Tabla de verdad de una compuerta NAND ..................................................... 26
Tabla 2-2. Distintas funciones de transferencia utilizadas en redes neuronales............... 30
Tabla 2-3. Tabla de verdad de una compuerta NAND ..................................................... 32
Tabla 2-4. Valores de Entrada/Salida de la red "xOR" ..................................................... 38
Tabla 2-5. Tipos de regiones de decisión en el Perceptrón .............................................. 39
Tabla 3-1. Tablas representativas de los números uno, dos y cuatro ............................... 73
Tabla 3-2. Tablas numéricas con pixel corrido ................................................................. 74
Tabla 3-3. Tablas numéricas de los números uno, dos y cuatro con distorsión ............... 83
Tabla 3-4. Números uno, dos y cuatro con mayor distorsión ........................................... 84
VIII
SIGLA Y SIMBOLOGÍA
SIGLA
ENIAC
:
Electronic Numerical Integrator And Computer
MIT
:
Massachussets Institute Tecnology
IA
:
Inteligencia Artificial
ANS
:
Artificial Neural Systems
MSE
:
Mean square error
NND3PC
:
Neural Network Design Demonstration Perceptron Classification
NND3HAMC :
Neural Network Design Demonstration Hamming Classification
NND4BD
:
Neural Network Design Demonstration Decision Boundaries
NNSTART
:
Neural Network Start
NARX
:
Nonlinear Autoregressive with External Input
V
:
Volts
Na+
:
Ion de sodio
:
Potasio
:
Calcio
P 2-
:
Compuesto
:
Sumatoria
∂
:
Derivada parcial
:
Tiempo
:
Integral
SIMBOLOGÍA
K+
Ca++
�
t
�
1
INTRODUCCIÓN
Con el inicio de la Primera revolución industrial, el hombre ha estado constantemente
en la búsqueda de poder automatizar procesos que anteriormente solo podían conseguirse
en base a la fuerza mecánica, esto fue uno de los motivos que dio inicio a la investigación
sobre inteligencia artificial (IA), que tuvo como propósito, el lograr diseñar máquinas con
un coeficiente intelectual elevado, esta reformación fue bautizada con el nombre de soft
computing o inteligencia computacional, cuyos principales miembros son: lógica borrosa
(fuzzy logic), redes neuronales (neuronal networks) en el cual se centra este trabajo,
computación evolutiva, algoritmos genéticos y machine learning. Una característica de
estas ramas de estudio es que son complementarias, se logran mejores resultados
uniéndolas que usándolas por sí solas [Del Brio, 2004].
En décadas pasadas con el estudio de Turing sobre el lenguaje binario (con el cual
se comunican nuestros actuales sistemas de cómputo), sumado a la arquitectura de diseño
computacional Von Neumann, dieron paso a las grandes máquinas automáticas que se
utilizan hoy en día, capaces de resolver complejos problemas en tiempo reducido. Esta
tecnología se basa en una enorme cantidad de componentes electrónicos conectados en un
espacio reducido, su mecanismo de funcionamiento consiste en ejecutar un algoritmo
previamente programado. Estos, aplican instrucciones que se siguen de forma secuenciada
(una a una) con gran rapidez, con una correcta programación del software de esta máquina
se puede conseguir que resuelva una gran cantidad de tareas [Del Brio, 2004].
La gran falencia se produce cuando el problema que queremos solucionar, no se
puede resolver mediante un tratamiento algorítmico, como la detección de objetos
mediante rasgos característicos, toma de decisiones en base a experiencias, o cualquier
problema como los denominados de la vida real, donde la información se presenta de
forma difusa, imprecisa y masiva [Del Brio, 2004]. Es en este punto donde se demuestra
la necesidad de un nuevo mecanismo de procesamiento lógico, en donde juegan un rol
importante las Redes neuronales artificiales o ANS (artificial neural network), sistemas
que emulan ciertos procesos del ser humano, como la capacidad de asociar hechos o
aprender ciertas tareas en base a experiencias, en cierta forma las redes neuronales no son
más que un modelo artificial y simplificado del cerebro humano, que actúa en función a
la principal célula del mismo, la neurona [Matich, 2001].
2
Objetivos
Objetivo General:
- Describir el comportamiento básico de una Red Neuronal Artificial y su aplicación
práctica mediante simulación en Matlab.
Objetivos Específicos:
-
Estudiar las partes que componen una red neuronal.
-
Investigar el funcionamiento de las redes neuronales básicas, fundamento y
metodología.
-
Estudiar los ToolBox de Matlab para redes neuronales
-
Diseñar y entrenar una Red Neuronal en Matlab a modo de caso práctico.
3
CAPÍTULO 1: HISTORIA Y BIOLOGÍA NEURONAL
3
1.1. HISTORIA DE LAS REDES NEURONALES
Las primeras actividades de investigación basadas en lo que se podría pensar como
inteligencia artificial nacen aproximadamente a mediados de la segunda guerra mundial,
bajo este contexto, investigadores tanto del área electrónica como de las ciencias en
general intentaron emular ciertas características de los seres vivos, uno de estos intentos
fue el de imitar el comportamiento de los sistemas reguladores de los mismos; aplicando
este concepto en ordenadores analógicos, fueron capaces de controlar cañones antiaéreos
o sistemas de navegación [Del Brío, 2004].
En esta época también comenzó el auge de otra corriente lógica, la cual sentará las
bases de la mayor parte de la tecnología de cómputo actual, todo esto de la mano de Alan
Turing y su famosa máquina homónima diseñada en 1936, poco tiempo más tarde el
matemático Walter Pitts y el neurofísico Warren McCulloch se encontraban en las
primeras investigaciones de las redes neuronales [Hagan, 2014], que se empezaron a
estudiar como otro intento de emular estructuras biológicas [Del Brío, 2004]. Producto de
estas investigaciones, 8 años más tarde McCulloch y Pitts publicaron el artículo “A
Logical calculus of ideas Imminent in Nervous Activity” este articulo constituyó la base
e inicio de muchos campos de estudio basados en estructuras neuronales [Basogain, 2008].
Pocos años más tarde y retomando los avances de Turing en el área digital se dio
paso a los primeros ordenadores electrónicos como el ENIAC (Electronic Numerical
Integrator And Computer), destinados a desarrollar cálculos de interés militar. El siguiente
eslabón de esta cadena vendría del aporte de un matemático de origen húngaro, Jhon Von
Neumman, quien desarrolla en 1945 lo que vendría siendo el primer computador basado
en lógica booleana, esta trabaja ejecutando una serie de instrucciones de forma serial (una
a una). De esta forma se lograba resolver casi cualquier problema mediante la codificación
de un programa de instrucciones secuenciada, el cual se almacenaba en una memoria y se
ejecutaba cuando era requerido, se denominara a este método de operación “algorítmico”.
Debido a su gran facilidad para desarrollar tareas y a su flexibilidad, este fue el enfoque
dominante de las últimas décadas, y se empezó a pensar que sería la clave para el futuro
[Del Brío, 2004].
Ese mismo año se lograron muchos avances prometedores con las máquinas basadas
en la arquitectura Von Neumman, en base a esta tecnología se pensó que se obtendrían
máquinas inteligentes capaces de pensar racionalmente, con la creación de un futuro
software altamente complejo, intentos de esta corriente intelectual dieron paso en 1950 a
4
la creación del primer software capaz de jugar ajedrez diseñado por Claude Shannon y el
mismo Turing, como también otros programas que intentaban emular decisiones humanas
[Shannon, 1949]. Hacia 1960 Jhon McCarthy instaura el término “Inteligencia Artificial”
o IA para definir métodos algorítmicos que dotarán a las máquinas de la capacidad de
“pensar”. Quince años más tarde Marvin Minsky, Newell y Simon lograron crear
programas capaces de realizar demostraciones matemáticas sobre teoremas geométricos
[Del Brío, 2004].
Por otra parte, los avances en el campo de las redes neuronales tampoco cesaban, de
tal
modo que en la década de 1950 el científico Donald Hebb prosiguió con las
investigaciones de McCulloch y Pitts, planteó que el condicionamiento clásico (como lo
descubrió Pavlov) está presente por las propiedades individuales de las neuronas. Propuso
un mecanismo de aprendizaje basado en neuronas biológicas [Hagan, 2014] y plasmó sus
ideas en el libro "The organization of the Behavior" donde describe como pueden aprender
las mismas [Duwan, 2014].
Un año más tarde los pioneros en el área Marvin Lee Minsky, John McCarthy,
Nathaniel Rochester y Claude Shannon organizaron la primera conferencia de inteligencia
artificial patrocinada por la fundación Rochester el verano de 1951 en la localidad inglesa
de Damounth, la conferencia se basaba en la conjetura de que cada aspecto del aprendizaje
o cualquier otra característica de la inteligencia del ser humano puede en principio,
describirse con tanta precisión como para fabricar una máquina capaz de simularla.
Propusieron lograr que las máquinas usen este lenguaje, formen abstracciones y
conceptos, resuelvan tipos de problemas que hasta ahora están reservados para los
humanos y se mejorasen a sí mismos [McCarthy, 1955], en muchos libros se hace
referencia a esta, como la primera toma de contacto seria con las redes neuronales
artificiales [Basogain, 2008].
Con los frutos de la investigación neuronal y con los conceptos más avanzados que
se iban desarrollando, Frank Rosenblatt en 1957 publicó uno de los mayores trabajos de
investigación neuronal, este consistía en desarrollar un elemento llamado “El Perceptrón”,
que era un sistema clasificador de patrones, ya sea geométricos o abstractos, podía
identificar diferencias entre estos. El primer perceptrón era un modelo sencillo y confiable,
trabajaba con celdas fotovoltaicas que recibían parte de la información visual del objeto
(imitando la retina) para luego ser comparadas entre sí y procesadas para emitir una
respuesta en base a la variación en la medida de los diferentes sensores, a pesar de que
algunas de estas celdas fuesen destruidas, el perceptrón no perdía su capacidad de
identificación [Basogain, 2008].
5
El problema fue que los crecientes avances en la tecnología de computadoras
eclipsaron el desarrollo de las redes neuronales y su modelo por excelencia, el perceptrón,
presentaba muchas limitaciones en su uso, lo que hizo que se perdiera la confianza en este
método de control [Del Brío, 2004]. Minsky y Papert años más tarde pusieron de
manifiesto estas limitaciones, la incapacidad de la red para realizar ciertas tareas
esenciales, como por ejemplo la función lógica OR exclusivo [Basogain, 2008].
A mediados de los 60 surgieron 2 hitos de relevancia para la comunidad
investigadora en el campo de las redes neuronales, por una parte Minsky y Papert
pertenecientes al laboratorio de investigación del MIT (Massachussets Institute
Tecnology) comenzaron el trabajo de una profunda critica al perceptrón, que tuvo como
resultado el libro “Perceptrons” el cual constaba de un análisis matemático del concepto
del mismo, este tenía como conclusión que el perceptrón y la computación neuronal no
eran temas relevantes para el avance tecnológico [Basogain, 2008], todo esto sumió a las
redes neuronales a un periodo de obscuridad del cual se tardaría más de 10 años en salir
[Del Brío, 2004].
Algunos estudios seguían con esperanzas de poder dar solución a algunos de los
problemas en computación neuronal, Bernard Widrow y Ted Hoff diseñaron otro sistema
de aprendizaje basado en redes neurales [Widrow, Hoff, 1960 in Hagan, 2014] el cual aún
se usa en la actualidad, pero cayeron en la misma problemática que Hebb, lo que detuvo
gran parte de la investigación en esta área [Hagan, 2014].
El rápido avance en el área de la computación se vio culminado con la creación de
los sistemas expertos, complejos programas para computadores donde se almacenaba el
conocimiento de especialistas en una materia (Diagnósticos de enfermedades, economía,
selección de créditos, operario de máquinas) y se codificaba en un programa en forma de
regla de toma de decisiones, si bien este sistema y muchos otros de los descritos
anteriormente tienen un mérito importante dentro de la historia, no resultan ser mucho más
inteligentes, el principal problema radica en que debido a la mecánica del procedimiento
secuencial, se torna muy complejo resolver problemas como los denominados del mundo
real, donde en ocasiones se deben discriminar de forma racional, un ejemplo de esto es el
procesamiento de imágenes, una tarea enorme para cualquier ordenador actual basado en
la arquitectura Von Neumman, debido a la alta concentración de información que contiene
la imagen, incluso para nuestros computadores actuales es difícil, debido a que las
computadores basadas en lógica booleana deben resolver el problema analizando la
imagen punto a punto y en orden, incluso para varios computadores trabajando a la vez
resulta una tarea imposible de realizar en tiempo real [Del Brío, 2004].
6
De esta forma es como se rompe el antiguo paradigma, y nacen nuevas ramas lógicas
y resurgen antiguas, como las Redes neuronales, sistemas borrosos, algoritmos genéticos
o la computación evolutiva, de los cuales los primeros llegan a ser los más relevantes.
Dado que estos sistemas están mejor adaptados para resolver problemas de visión en
tiempo real o aprendizaje, gracias a su mecánica de funcionamiento paralela se logra
mejores resultados.
El trabajo de investigadores como J.J. Hopfield o T. Kohonen presentaron cambios
en la mirada de la computación neuronal [Kohonen, 1972 in Hagan 2014], principalmente
Hopfield quien introdujo nuevos y revolucionarias ideas independiente de James
Anderson desarrollaron por separado nuevas redes neuronales que eran capaces de actuar
en base a recuerdos [Hopfield, 1982], Stephen Grossberg también fue muy activo durante
este período en la investigación de redes auto-organizadas [Grossberg (1976) In Hagan,
2014], estas redes no trabajaban siendo entrenadas como las descritas anteriormente si no
que se basaban en el funcionamiento del tejido cerebral en el cual la activación de zonas
en la red próximas unas de otras y estímulos muy dispares activaban zonas lejanas, era
esta proximidad o lejanía en la activación de neuronas dentro de la red la que le permitía
identificar irregularidades o clases en los datos de entrada-salida [Bueno, 2016]. Su trabajo
constituyó un gran impulso en las investigaciones de modelos neuronales [Basogain,
2008].
Hopfield presenta un nuevo tipo de red, ésta se descifró combinando las Redes
Neuronales con modelos de mecánica estadísticos para explicar el funcionamiento de
cierta clase de red recurrente [Hagan, 2014], que podría actuar como una memoria
asociativa. Se introdujo un nuevo modelo de red neural, el perceptrón multicapa, que
eliminaba de raíz las falencias de su antecesor el perceptrón simple. Finalmente en 1982
Hopfield publica su artículo “Hopfield Model o Crossbar Associative Network” junto con
la invención del algoritmo Backpropagation, ampliamente usado en la actualidad, con todo
esto se consiguió devolver el interés en el estudio de la computación neuronal y fue la
respuesta clave para las críticas de Minsky y Papert en los años 60s [Hagan, 2014], tras
casi 2 décadas de inactividad.
Cabe destacar que el segundo integrante principal de este nuevo camino a la
inteligencia artificial, los sistemas borrosos, fueron los candidatos ideales para el problema
de lógica booleana, donde sólo se podía discriminar a través de aseveraciones “verdadero
o falso” una cualidad está presente o no, se sabe que en el mundo real es muy diferente.
De este modo la lógica borrosa puede tomarse como una lógica multivaluada que permite
manejar estos conceptos borrosos o difusos recurrentes en el mundo real, emulando el
razonamiento del cerebro humano, de esta forma se puede decir que si las redes neuronales
7
vendrían siendo un tipo de Hardware que emula el comportamiento del cerebro, los
sistemas borrosos vendrían siendo el Software del mismo [Del Brío, 2004].
Si bien, según lo descrito anteriormente para una máquina booleana es muy difícil
resolver problemas de razonamiento que para los seres humanos pueden resultar muy
fáciles, como identificar un objeto a simple vista, para dichas máquinas es muy fácil
resolver problemas que para los seres humano toma un tiempo excesivo, como el calcular
ecuaciones complejas con gran precisión, es por esto que los sistemas de inteligencia
artificial que mencionamos con anterioridad no debiesen de verse como sustitutos de los
computadores basadas en la arquitectura Von Neumman, sino como una tecnología
complementaria de la misma, la cual nos traerá soluciones que antes creíamos imposibles.
1.1.1. Redes neuronales en la actualidad
Hoy en día existen diversas universidades enfocadas al estudio de las IA, y a lo largo
de estos últimos años con diversas aplicaciones, cada grupo de investigadores con
diferentes especialidades para lograr llevar a cabo el entrenamiento o diseño de las
mismas, neurólogos, biólogos, físicos, programadores y matemáticos. En palabras de J. A.
Anderson: “Uno de los aspectos más gratos del trabajo en redes neuronales es la necesidad
de permanecer atentos, cuando menos, a resultados de diversos campos. No es un área de
trabajo para especialistas estrechos de miras” [Anderson (2004) in Del Brío, 2004].
En este aspecto han sido muchos los beneficios que han logrado obtener de estos
sistemas conexionistas, como el uso de perceptrones multicapa en el análisis de patrones
de escritura para la identificación de antiguos manuscritos de origen desconocidos con
buenos resultados. Google usa redes neuronales para la identificación de imágenes
mediante rasgos característicos. Se utilizan también en el reconocimiento facial y en los
sistemas de conducción autónoma por la amplia cantidad de variables en tiempo real que
hay que dominar, en la Universidad de Lund y en el Hospital Universitario de Skåne en
Suecia usaron computación neuronal para mejorar las tasas de supervivencia a largo plazo
en trasplantes de corazón, identificando coincidencias óptimas entre el donador y
paciente, mejorando sustancialmente la calidad de vida de este último [Hagan, 2014].
Como ejemplificamos, el uso de las redes neuronales es ampliamente utilizado hoy en día.
8
1.2. INSPIRACIÓN BIOLÓGICA
Una parte importante para entender el concepto de las redes neuronales artificiales o
ANS (Artificial Neural Systems), es el comprender el funcionamiento de una neurona
biológica, que es en el fondo, de donde nace el concepto de “Elemento procesador”. Las
neuronas trabajan a través de estímulos, por lo que es importante entender este apartado
para comprender el funcionamiento asociativo y adaptativo de la misma.
El ser humano consta aproximadamente de 1011 neuronas, altamente interconectadas
entre sí, “se sabe que cada neurona puede hacer conexiones con otras 104
aproximadamente” [Hagan, 2014], éstas bajo el microscopio presentan diversas formas,
pero las partes más importantes que componen cada una de ellas, se representan de la
siguiente forma.
Figura 1-1. Estructura de una Neurona Biológica
Fuente: medium.com/
La información que recibe la neurona comienza su camino desde el árbol déndrico,
compuesto por las dendritas, estas son las terminaciones que se encargan de recibir
estímulos provenientes ya sea del exterior, o de otra neurona predecesora. El núcleo
central de la neurona inserto en el SOMA es donde se procesa toda la información
proveniente de las dendritas, está recubierto de la sustancia de Nissl compuesta de
gránulos basófilos abundantes en los cuerpos neuronales. Los cuerpos de Nissl se
encuentran diseminados en el neuroplasma y en dendritas de mayor diámetro, pero están
9
ausentes en el cono axónico y el axón [Dovale, 2005]. Son sitios de síntesis de proteínas
que actúan en el proceso de inhibición o activación de la neurona. La información ya
procesada egresa como un único parámetro de salida por el axón (cuya longitud es del
orden de las 100 micras hasta el metro en caso de neuronas motoras), la cual al igual que
las dendritas tiene una ramificación final, sólo que ésta expulsa un único parámetro hacia
otras neuronas sucesoras [Del Brío, 2004].
1.2.1. Tipos de neuronas
Los tipos de neuronas de dividen en diferentes grupos dependiendo de su ubicación
y su trabajo específico dentro del sistema nervioso. Por ejemplo, las terminaciones
nerviosas igual constituyen un tipo de neurona, la cual, si bien no realiza un procesamiento
de la información como el núcleo neuronal, se realizan ciertos procesos de “cómputo” en
ellas, estas terminaciones se encargan de recibir ciertos estímulos provenientes del
exterior. Un ejemplo de esto son las neuronas bipolares que poseen sus dendritas y axones
localizados en puntos distantes del cuerpo neuronal, este tipo de neuronas se puede
encontrar en la retina y en los ganglios vestibulares y cocleares del oído interno, otro tipo
de neurona que capta información del entorno son las neuronas Golgi tipo I que poseen
axones largos que salen de la región donde se encuentra el soma celular y terminan lejos
de su origen, en otra parte del sistema nervioso o en otro tejido, tal como la piel o los
músculos [Dovale, 2005], a este tipo de neuronas se les denomina receptoras o sensoras,
ya que como se explica anteriormente, reciben información desde el exterior y no
provenientes de otra neurona, “se calcula que una neurona del córtex cerebral recibe en
promedio información de unas 10.000 neuronas, y envía estímulos a varios cientos de
ellas” [Del Brío, 2004].
10
Figura 1-2. Tipos de neurona
Fuente: https://neuroanatomia.info
Desde un punto de vista analítico el cuerpo neuronal viene constituyendo un
procesador de información sencillo el cual se explicará a continuación.
11
1.2.2. Función de activación biológica
Todo el procesamiento del cerebro inicia con el concepto de sinapsis, el cual se
define como la “unión” o contacto entre neuronas, desde el extremo axónico (neuronas
presinápticas) de una, que es de donde se envía el estímulo que conecta con el árbol
déndrico, hasta la siguiente (neurona postsináptica), que es quien recibe dicho estímulo
[Dovale, 2005], si bien se ejerce cierta conexión entre estos terminales, el contacto no es
físico, ya que estas permanecen separadas por una distancia promedio de 0,2 micras [Del
Brío, 2004].
Figura 1-3. Sinapsis entre el terminal axonico de una neurona y déndrico de la otra
Fuente: es.khanacademy.org
Existen en principio 2 tipos de potenciales que se deben generar para que se
establezca la activación de una neurona y el posterior estímulo de salida de la misma, el
cual se denomina “potencial de acción”. El primero, es un potencial químico que se
produce en el exterior del cuerpo de la neurona, el segundo vendría siendo un potencial
eléctrico adosado a la cara interna de la membrana celular [Dovale, 2005].
12
Figura 1-4. Iones de activación dentro y fuera de una membrana celular.
Fuente: Redes neuronales y sistemas borrosos
B. Martín del Brío, A. Sanz Molina
El estado inicial de una neurona empieza con una carga negativa respecto del medio
exterior, existiendo un potencial de -60mV entre ambos lados, de esta forma se asimila al
comportamiento de un condensador eléctrico. La existencia de este potencial de reposo
inicial de la neurona (previo al potencial de acción) se debe a las concentraciones de iones
de tipo 𝑁𝑁𝑁𝑁+ (ion de Sodio), 𝐾𝐾 + (Potasio) y mayoritariamente 𝑃𝑃2− (Compuesto) el cual se
origina por efecto de la perdida de iones de 𝐶𝐶𝐶𝐶++ (Calcio) sumado a los anteriores, debido
al gran tamaño del potencial 𝑃𝑃2− este no puede atravesar la rejilla presináptica, la cual
contiene ambos potenciales divididos. Los canales importantes dentro del proceso de
activación de la neurona se encuentran en los iones 𝑁𝑁𝑁𝑁+ los cuales presentan un estado
pasivo, comportándose como simples poros. Por otra parte, los canales 𝑁𝑁𝑁𝑁+ son activos y
se convierten en permeables al ion 𝑃𝑃2− cuando el potencial de la membrana celular
asciende por encima de los -45mV. A esta tensión de excitación se le denomina “umbral
de disparo”, ya que pasado el mismo se efectúa la activación de la neurona [Del Brío,
2004].
El potencial de activación entonces, se genera partiendo con el proceso de sinapsis,
en este punto se genera un lazo de comunicación entre una neurona presináptica y otra
postsináptica, la neurona presináptica libera sustancias químicas altamente complejas
denominadas neurotransmisoras [Dovale, 2005].
13
Figura 1-5. Potencial de acción en el proceso sináptico
Fuente: es.khanacademy.org
Estos neurotransmisores ingresan a la neurona postsináptica por medio del vacío
sináptico [Dovale, 2005]. Si la neurona posee en el SOMA canales sensibles a estos
neurotransmisores como los iones antes descritos, estos permitirán el paso de
determinados iones a través de la membrana. Estas corrientes crearán pequeños
potenciales excitadores (positivos) o inhibidores (negativos), si la suma de estos
potenciales de entrada resulta en un potencial suficientemente alto, este puede elevar la
carga inicial de la neurona por encima de los -45mV (umbral de disparo), lo que produce
que se abran bruscamente los canales de sodio de modo que los iones 𝑁𝑁𝑁𝑁+ entran
masivamente al interior produciendo una despolarización de la neurona llegando ésta los
+50mV, inmediatamente llegando a este valor el potencial de la neurona vuelve a caer
progresivamente en su estado inicial durante un periodo de tiempo en el cual no puede
producirse otra activación [Del Brío, 2004].
14
+5
Potencial de acción
0mV
1 ms
t (ms)
Período
-45mV Umbral de disparo
-60mV
Potencial de reposo
Polarización
Despolarización
Hiperpolarización
Figura 1-6. Potencial de activación
Fuente: Redes neuronales y sistemas borrosos
B. Martín del Brío, A. Sanz Molina
A este periodo se le denomina refractario e impide que se establezcan 2 potenciales
de acción de forma simultánea [Del Brío, 2004].
Dentro de la red neuronal biológica, altamente interconectada se pueden encontrar
millones de potenciales de activación sucediendo al mismo instante, cabe destacar que
este potencial no solamente puede ser de carácter activo si no también inhibidor, la
diferencia de este último es que enviaría una señal negativa por su axón a otra neurona, la
cual intentaría anularse con otros potenciales de activación provenientes del resto de
células [Dovale, 2005].
Como se vio anteriormente, el pulso generado podría verse como un impulso digital,
ya que está o no presente en la red, se sabe que ante una estimulación muy intensa el
intervalo entre la cantidad de pulsos que genera una neurona puede verse drásticamente
acortado, lo que aumentaría por así decirlo la frecuencia de ésta. Por lo que el nivel de
excitación queda codificado en la relación de frecuencia de los potenciales de acción [Del
Brío, 2004] es en esta relación de intensidad/frecuencia, donde se piensa que se codifica
la información [Izaurieta, 2014].
Típicamente estas neuronas son casi 6 veces más lentas que una compuerta lógica, y
su periodo anterior al proceso sináptico genera un gasto energético más grande debido al
alto bombeo de iones Na+ K+, para mantener la polarización negativa [Del Brío, 2004].
La gran diferencia se encuentra en la masiva concentración de disparos altamente
distribuidos a lo largo de toda la red cerebral y a la cantidad de conexiones que se generan
15
hace que el sistema de nuestro cerebro sea altamente eficiente siendo ésta de unos 1016 𝐽𝐽,
el cual es del orden de 10 elevado a 10 veces mayor que los mejores computadores actuales
[Izaurieta, 2014].
Dado que las ANS imitan una estructura de Hardware del cerebro humano, este se
diferencia de una Máquina digital o computador en que su comportamiento es de forma
paralela, distribuida y adaptativa [Del Brío, 2004].
Si se recuerda el concepto anterior de la problemática de una computadora digital
que trabaja con uno o pocos procesadores, la cual no puede por ejemplo, desarrollar tareas
como la de reconocer una mosca al vuelo y atraparla en el aire, cosa que para el cerebro
de una rana resulta ser algo simple [Del Brío, 2004].
Los 3 conceptos descritos anteriormente, parecen ser la clave para lograr tareas de
comportamiento difuso. El paralelismo se puede emplear tomando como ejemplo la tarea
de procesamiento de imágenes, para un ordenador clásico que trabaja de forma
secuenciada, procesar una imagen de 256x256 pixeles tardaría unos minutos dependiendo
de la potencia del ordenador y con un tratamiento de nivel relativamente bajo. Para un
sistema de procesamiento paralelo como las redes neuronales artificiales, emplearía
alrededor de 20ms en realizar la misma tarea, ya que cada uno de los procesadores se
encargaría de un sector de la imagen en específico. Finalmente, el cerebro humano es
capaz de realizar en el mismo tiempo el procesamiento de imágenes de millones de
pixeles, extraer sus rasgos característicos, analizarla e interpretarla. La clave para este tipo
de efectividad reside en los millones de neuronas altamente interconectadas, recordar que
estas últimas vendrían siendo diminutos procesadores [Del Brío, 2004].
1.2.3. Estructura neuronal
La estructura de una red neuronal biológica, en el fondo no sigue los mismos pasos
que una artificial, la red artificial ejecuta sus conexiones de forma ordenada, mediante
capas de conexión. Mientras que una red biológica no lo hace siguiendo un orden
establecido, si no que de forma casi aleatoria. Una neurona biológica puede hacer sinapsis
con otra que esté mucho más lejos, el orden de estas conexiones puede ser en cualquier
dirección posible, incluso pudiendo hacer sinapsis consigo misma. Si bien,
experimentalmente se han logrado modelos artificiales que emulen de forma muy
simplista este concepto, creando algoritmos de creación y destrucción de neuronas en base
a reglas de aprendizaje, no se han logrado beneficios de esta práctica [Del Brío, 2004].
16
A lo largo de la vida parte de las neuronas biológicas se destruyen, lo que emerge
más complejidad a la estructura final de la red. Cabe destacar que el esquema presentado
en esta sección no complementa la realidad total de lo que ocurre en las zonas neuronales
del cerebro. En este se realizan más tipos de activaciones, mediante impulsos eléctricos o
químicos, inclusive mixtos, ya que la finalidad de este apartado es el explicar de dónde
nace la inspiración de la cual nace el concepto de red neuronal artificial [Del Brío, 2004].
Figura 1-7. Represtación morfológica de neuronas del córtex auditivo
Fuente: Texture of the Nervous System of Man and the Vertebrates
Santiago Ramón y Cajal
16
CAPÍTULO 2: REDES NEURONALES ARTIFICIALES
17
2.1. MODELO NEURONAL
El modelo neuronal que se introdujo entonces, se utiliza con el fin de imitar el
comportamiento global de la red, intentando emular así sus características más relevantes,
que entran en juego en su interacción con toda la red [Izaurieta, 2014]. La neurona
artificial se basa en la simplificación del sistema antes visto [Basogain, 2008], el esquema
típicamente se representa en la (Figura 2-1):
Figura 2-1. Neurona Estándar
Fuente: Redes neuronales y sistemas borrosos
B. Martín del Brío, A. Sanz Molina
Donde:
-
𝑋𝑋𝑖𝑖 = Entrada sináptica de la neurona i
𝑊𝑊𝑖𝑖 = Peso asociado a la entrada de la neurona i
𝑏𝑏𝑖𝑖 = Sesgo asociado al conjunto de entrada (bias)
El modelo de la imagen trabaja como una neurona McCulloch Pitts, la cual recibe
una o múltiples entradas desde 𝑋𝑋1 , 𝑋𝑋2 , …, 𝑋𝑋𝑛𝑛 . Éstas pueden ser provenientes de datos de
entrada provenientes del exterior o de otra neurona presináptica [Hagan, 2014].
18
Esto se correlaciona con los subíndices de cada entrada y peso sináptico, los cuales
se corresponden con la ubicación de la neurona dentro de la futura red, de tal modo que si
una neurona “j” expulsa un valor de salida 𝑦𝑦𝑗𝑗 este luego pasará a ser la entrada de la
siguiente neurona “i” que recibe el dato, pasando a ser la entrada 𝑋𝑋𝑗𝑗 a la cual
se
le
denomina un peso asociado 𝑊𝑊𝑖𝑖𝑖𝑖 el cual se multiplica por dicho factor, definiendo la
importancia relativa de cada entrada [Izaurieta, 2014].
Neurona Presináptica (j)
Neurona Postsináptica (j)
Figura 2-2. Interacción entre una neurona Presináptica y otra postsináptica
Fuente: Elaboración propia
El resultado de este producto se le añade un parámetro adicional denominado bias
(sesgo), el cual determina normalmente la decisión salida de un conjunto de entradas “𝑋𝑋𝑗𝑗 ”
, en otros textos se le puede denominar con el nombre de “umbral”, siendo este, algunas
veces un potencial negativo que determina el nivel de entrada mínimo para que la salida
del argumento de la función sea positivo, como en el caso de nodos respuesta todo-nada
[Del Brío, 2004]. Cabe destacar que no siempre el bias actuará como un umbral.
El resultado de esta sumatoria se le denomina la “regla de propagación”, que vendrá
luego inserta en la función de activación, o como se le denomina en otros textos “función
de transferencia” viene dada por la ecuación (1.1):
𝑦𝑦𝑖𝑖 (𝑡𝑡) = 𝑓𝑓 ���𝑋𝑋𝑖𝑖𝑖𝑖 𝑊𝑊𝑗𝑗 ± 𝑏𝑏𝑗𝑗 ��
(1.1)
19
Si se supone por ejemplo una neurona artificial de una sola entrada con sus valores
de entradas, pesos sinápticos y bias de la forma:
-
𝑋𝑋1 = 3,3
𝑊𝑊2 = 4
𝑏𝑏2 = -2
El argumento de la función de activación resultaría:
𝑦𝑦𝑖𝑖 = 𝑓𝑓�(3,3)(4) − 2�
𝑦𝑦𝑖𝑖 = 𝑓𝑓(11,2)
Siendo luego el valor “11,2” argumento de la función de transferencia, luego la salida
quedará determinada por el valor de 𝑦𝑦𝑖𝑖 que vendría siendo el valor de salida que egresaría
del Axón de la neurona artificial.
2.1.1. Modelo de Regresión lineal
Al modelo de la regla de propagación se le conoce también matemáticamente con el
nombre de “modelo de regresión lineal múltiple”, el cual es un método estadístico
representado por el argumento de la ecuación (1.10) que tiene como finalidad investigar y
modelar la relación entre variables aleatorias [Montgomery, 2006] donde:
𝑦𝑦𝑖𝑖 = 𝑋𝑋𝑖𝑖 𝑊𝑊𝑖𝑖 + 𝑏𝑏
-
(1.2)
𝑊𝑊𝑖𝑖 = Variable predictora o regresora
𝑦𝑦𝑖𝑖 = Variable de respuesta
Este método estadístico sirve entre otras cosas para, ajustar la dispersión de una
variable aleatoria a relación rectilínea entre los parámetros, por ejemplo, el tiempo de
20
entrega de un repartidor en una tienda en relación a la cantidad de cajas de entrega o su
volumen, como se ejemplifica en la figura.
Figura 2-3. Diagrama de dispersión con relación rectilinea entre el tiempo y el volumen
Fuente: introducción al análisis de regresión lineal. Montgomery, 2006
La Figura 2-3representa un modelo matemático, que se construye dibujando una
línea que represente la tendencia de crecimiento de los datos, a este método se le denomina
regresión lineal simple, ya que cuenta con 2 parámetros regresivos 𝑤𝑤𝑖𝑖 por lo que el plano
queda de carácter bidimensional. Mientras más variables se relacionen, mayor será el
número de dimensiones que superpongan al plano [Montgomery, 2006] por lo que pueden
llegar a formarse planos tridimensionales o incluso hiperplanos los cuales se pueden
trabajar matemáticamente mediante matrices, un ejemplo de plano tridimensional se
ejemplifica en el subcapítulo 2.2.4
El análisis de regresión lineal es un modelo iterativo, donde los datos conducen al
ajuste del modelo, y se produce un ajuste del modelo a los datos [Montgomery, 2006]. Por
lo que el modelamiento puede realizarse de forma autónoma si se diseña una arquitectura
como la que se trata en el capítulo 4, entonces el modelo matemático de regresión lineal
es el argumento fundamental para el desarrollo de la red neuronal
21
2.1.2. Método de cuadrados ordinarios.
Como se ejemplifica anteriormente, se puede crear un modelo regresivo lineal para
modelar la tendencia entre variables en un plano a partir de un gráfico de dispersión, pero
lo ideal sería crear un modelo que sea capaz de dibujar esta línea de forma autónoma y
que ésta se construya a través de estos datos recolectados. Para esto se utiliza el método
de cuadrados ordinarios, para lo cual es necesario explicar un término adicional que se
añade a la ecuación denominada el error.
Si se trabaja nuevamente el plano descrito anteriormente, y se miden las distancias
desde los puntos de medición real del problema planteado y la línea predictora del modelo
que se trazó se logrará conseguir el error, el cual se describe como la diferencia entre estas
distancias.
𝑦𝑦𝑟𝑟
𝑦𝑦𝑒𝑒
Figura 2-4. Cálculo del error medio de la gráfica de dispersión
Fuente: Elaboración propia
𝑒𝑒 = (𝑦𝑦𝑟𝑟 − 𝑦𝑦𝑒𝑒 )
(1.3)
Como no se tiene un único valor de error en el gráfico, se calcula la media de todas
las distancias de error y se elevan al cuadrado, para reforzar o penalizar el mismo, lo que
se logra con esto es penalizar con mayor intensidad aquellos datos que están más alejados
de la recta y con menor intensidad a los que están más cerca. Al resultado se le conoce
con el nombre de error cuadrático medio o “mean square error” (MSE), y es fundamental
para conocer el nivel de eficiencia de la red en futuros capítulos.
22
𝑀𝑀𝑀𝑀𝑀𝑀 = (𝑦𝑦𝑟𝑟 − 𝑦𝑦𝑒𝑒 )2
(1.4)
Lo que busca el método de cuadrados ordinarios, es modificar los parámetros de la
recta regresará lineal, para disminuir el valor del MSE estimando los valores de 𝑤𝑤𝑖𝑖 y 𝑏𝑏 lo
menor posible según la ecuación (1.2) , se puede escribir.
𝑦𝑦𝑖𝑖 = 𝑥𝑥𝑖𝑖 𝑤𝑤1 + 𝑏𝑏 + 𝜀𝜀𝑖𝑖
(1.5)
Con 𝑖𝑖 = 1,2, … , 𝑛𝑛
Se puede considerar la ecuación (1.2) un modelo poblacional de regresión, mientras
que la ecuación (1.5) un modelo muestra de regresión, escritos en términos de los n pares
de datos (𝑦𝑦𝑖𝑖 , 𝑥𝑥𝑖𝑖 ) (𝑖𝑖 = 1,2, … , 𝑛𝑛), así el criterio de mínimos cuadrados queda.
𝑛𝑛
𝑆𝑆(𝑤𝑤1 , 𝑏𝑏) = �(𝑦𝑦𝑖𝑖 − 𝑏𝑏 − 𝑤𝑤1 𝑥𝑥𝑖𝑖 )2
(1.6)
𝑖𝑖=1
Siendo:
𝑆𝑆(𝑤𝑤1 , 𝑏𝑏) = función de coste, que determina el error de la expresión.
Designando 𝑤𝑤1 ′ y 𝑏𝑏 ′ como estimadores de mínimos cuadrados de b y 𝑤𝑤1 se debe
satisfacer que.
𝑛𝑛
y
𝜕𝜕𝜕𝜕
| = −2 �(𝑦𝑦𝑖𝑖 − 𝑏𝑏 ′ − 𝑤𝑤1 ′ 𝑥𝑥𝑖𝑖 ) = 0
𝜕𝜕𝜕𝜕
𝑖𝑖=1
𝑛𝑛
𝜕𝜕𝜕𝜕
| = −2 �(𝑦𝑦𝑖𝑖 − 𝑏𝑏 ′ − 𝑤𝑤1 ′ 𝑥𝑥𝑖𝑖 )𝑥𝑥𝑖𝑖 = 0
𝜕𝜕𝑤𝑤1
𝑖𝑖=1
23
Simplificando.
𝑛𝑛
𝑛𝑛
𝑖𝑖=1
𝑖𝑖=1
𝑛𝑛𝑏𝑏 ′ + 𝑤𝑤1 ′ � 𝑥𝑥𝑖𝑖 = � 𝑦𝑦𝑖𝑖
′
𝑛𝑛
𝑏𝑏 � 𝑥𝑥𝑖𝑖 +
𝑖𝑖=1
𝑛𝑛
𝑤𝑤1 � 𝑥𝑥𝑖𝑖2
𝑖𝑖=1
′
𝑛𝑛
= � 𝑦𝑦𝑖𝑖 𝑥𝑥𝑖𝑖
𝑖𝑖=1
Las respectivas ecuaciones se llaman “ecuaciones normales de mínimos cuadrados”,
con esto se logra minimizar al máximo el coste de error mediante el cálculo de su derivada
e igualando a cero para encontrar el mínimo de ambas funciones, como estas dependen de
la función de coste 𝑆𝑆(𝑤𝑤1 , 𝑏𝑏) se deben derivar tanto b como 𝑤𝑤1 parcialmente respecto de
S. La solución es la siguiente.
(1.7)
𝑏𝑏 = 𝑦𝑦� − 𝑤𝑤1 ′ 𝑥𝑥̅
𝑤𝑤1 ′ =
(∑𝑛𝑛𝑖𝑖=1 𝑦𝑦𝑖𝑖 )(∑𝑛𝑛𝑖𝑖=1 𝑥𝑥𝑖𝑖 )
−
𝑛𝑛
2
𝑛𝑛
∑
�
𝑥𝑥
�
𝑖𝑖
∑𝑛𝑛𝑖𝑖=1 𝑥𝑥𝑖𝑖2 − 𝑖𝑖=1
𝑛𝑛
∑𝑛𝑛𝑖𝑖=1 𝑦𝑦𝑖𝑖 𝑥𝑥𝑖𝑖
(1.8)
Donde:
𝑛𝑛
1
𝑦𝑦� = � 𝑦𝑦𝑖𝑖
𝑛𝑛
𝑖𝑖=1
𝑦𝑦
𝑛𝑛
1
𝑥𝑥̅ = � 𝑥𝑥𝑖𝑖
𝑛𝑛
𝑖𝑖=1
Son los promedios de ambos factores. Por tanto los valores de 𝑤𝑤1 ′ y b son los
estimadores por cuadrados mínimos de la pendiente y la ordenada al origen de la gráfica
de la Figura 2-3 u cualquier otra que se desee calcular. La ecuación final con los
estimadores quedará de la forma.
𝑦𝑦 ′ = 𝑥𝑥𝑖𝑖 𝑤𝑤1 ′ + 𝑏𝑏 ′
24
2.1.3. Funciones de Salida
La función de salida global de la neurona no solo depende de la regla de propagación
o regresión lineal antes vista, sino también de una función de salida 𝑦𝑦𝑖𝑖 (𝑡𝑡), en función del
estado de activación o función de transferencia actual, ésta dependerá del tipo de regla de
aprendizaje que se use y el modelo neuronal, existen casos donde la función de salida será
igual a la identidad F(x) = x, por lo que el valor de 𝑦𝑦𝑖𝑖 (𝑡𝑡) será:
𝑦𝑦𝑖𝑖 (𝑡𝑡) = 𝐹𝐹𝑖𝑖 �𝑎𝑎𝑖𝑖 (𝑡𝑡)� = 𝑎𝑎𝑖𝑖 (𝑡𝑡)
(1.9)
𝑎𝑎𝑖𝑖 (𝑡𝑡) = �(𝑋𝑋𝑖𝑖 𝑊𝑊𝑖𝑖 ± 𝑏𝑏)
(1.10)
Donde:
Este caso se da en funciones neuronales simples como la “Adalina”, también puede
darse casos donde la señal de salida de la neurona sea de tipo escalón o “Hard Limit
Transfer Function” [Hagan, 2014], lo que supondría que la señal de salida será 𝑦𝑦𝑖𝑖 = 0
hasta no superar el valor del umbral de activación “𝑏𝑏𝑖𝑖 ”:
𝑦𝑦𝑖𝑖 = 1 Si, ∑�𝑋𝑋𝑖𝑖𝑖𝑖 𝑊𝑊𝑗𝑗 � > 𝑏𝑏𝑗𝑗
𝑦𝑦𝑖𝑖 = 0 Si, ∑�𝑋𝑋𝑖𝑖𝑖𝑖 𝑊𝑊𝑗𝑗 � ≤ 𝑏𝑏𝑗𝑗
��𝑋𝑋𝑖𝑖𝑖𝑖 𝑊𝑊𝑗𝑗 � > 𝑏𝑏𝑗𝑗
SALIDA
𝑦𝑦𝑖𝑖(𝑡𝑡)
TIEMPO
Figura 2-5. Grafica de salida de una neurona “Hard Limit”
Fuente: Elaboración propia
25
En la gráfica se puede apreciar la respuesta en el tiempo de la función de
transferencia todo-nada (Hard Limit), se ilustra la respuesta de estado alto cuando 𝑋𝑋𝑖𝑖𝑖𝑖 𝑊𝑊𝑗𝑗
superan el umbral de disparo. Los valores máximos de la función también pueden variar
entre 1 y -1 dependiendo de la necesidad de la aplicación.
En este caso se podría considerar que el potencial de las entradas inhibidoras será de
tipo absoluto, ya que “ante la presencia de una señal inhibidora la neurona ya no se
disparara” [Del Brío, 2004], este fue uno de los primeros modelos neuronales que se
desarrollaron y se demostró que incluso podía realizar tareas de funciones binarias, así
como las compuertas lógicas, por ejemplo, si tomamos los siguientes parámetros para dos
neuronas presinápticas (1) y (2) [Hagan, 2014].
-
𝑊𝑊1 = -2
𝑊𝑊2 = -2
b=3
Se podría crear una neurona que simule el comportamiento de una compuerta de tipo
NAND, la cual se sabe que es la base para simular las demás compuertas lógicas de tipo
lineal, en este caso el modelo regresivo no se utilizaría como una línea que se ajusta a una
dispersión de valores, sino, una línea que separaría la combinación de estas variables en
dos tipos de salida, a este tipo de redes neuronales se les denomina “clasificadoras”, esto
se ejemplifica más claramente en la sección.
26
Insertando los parámetros en el nodo nos quedaría:
Neurona Estándar H (.)
Compuerta Lógica NAND
Figura 2-6. Comparativa entre compuerta lógica NAND y Nodo neuronal
Fuente: Elaboración propia
Las respectivas ecuaciones quedarían de la forma:
(1.11)
𝑦𝑦 = 𝐻𝐻(𝑤𝑤1 𝑥𝑥1 + 𝑤𝑤2 𝑥𝑥2 − 𝑏𝑏) = 𝐻𝐻(−2𝑥𝑥1 − 2𝑥𝑥2 + 3)
𝐹𝐹 = �������
𝐴𝐴 ∗ 𝐵𝐵
(1.12)
Realizando las tablas de verdad:
Tabla 2-1. Tabla de verdad de una compuerta NAND
𝑥𝑥1
0
𝑥𝑥2
0
𝑦𝑦
1
𝐴𝐴
0
𝐵𝐵
0
0
1
1
𝐹𝐹 = �������
𝐴𝐴 ∗ 𝐵𝐵
0
1
1
1
0
1
1
0
1
1
1
0
1
1
0
1
Sin embargo, un nodo de tipo umbral como el demostrado sólo puede implementar
funciones separables linealmente como las compuertas, AND, OR, NOR, NAND, donde
se puede encontrar una única recta que separa perfectamente las regiones correspondientes
a los valores lógicos 0 y 1 [Del Brío, 2004]. Las funciones no separables linealmente no
se pueden llevar acabo como por ejemplo la función lógica xOR (OR exclusivo), es por
27
esto es que se trabaja además con otro tipo de funciones de transferencia y estructuras
multicapa, las cuales se profundizarán más adelante en la subsección 2.2.2 [Izaurieta,
2014].
2.1.4. Modelo neuronal general
De este modo el procesamiento de una neurona artificial evaluada en función del
tiempo, requiere de todos estos pasos para funcionar, el modelo más generalizado conlleva
el siguiente orden [Del Brío, 2004]:
Pesos Sinápticos
Sinapsis
𝒙𝒙𝟏𝟏
⎧𝒙𝒙𝟐𝟐
⎪𝒙𝒙𝟑𝟑
⎪
𝒙𝒙𝒋𝒋
𝒙𝒙𝒋𝒋 .
⎨
⎪ .
⎪ .
⎩𝒙𝒙𝒏𝒏
𝒘𝒘𝒊𝒊𝒊𝒊
𝒉𝒉𝒊𝒊 =
𝒂𝒂𝒊𝒊 =
𝝏𝝏(𝒘𝒘𝒊𝒊𝒊𝒊 , 𝒙𝒙𝒋𝒋 )
Entradas
Salida
𝒚𝒚𝒊𝒊 = 𝑭𝑭( 𝒂𝒂𝒊𝒊 )
𝒇𝒇( 𝒉𝒉𝒊𝒊 )
Regla de
𝒚𝒚𝒊𝒊
Función de Salida
propagación
Función de transferencia
Figura 2-7. Modelo genérico de una neurona estándar
Fuente: Elaboración propia
Referenciando la secuencia en el tiempo para una neurona de una entrada 𝑥𝑥𝑗𝑗
quedaría:
El conjunto de entradas xj (t) en función del tiempo.
Los pesos sinápticos de la neurona i, 𝑤𝑤𝑖𝑖𝑖𝑖
La regla de propagación ℎ𝑖𝑖 (t) = ∂(wij , xj (t)), que entrega el potencial de hi (t), en
función de xj (t) y 𝑤𝑤𝑖𝑖𝑖𝑖 .
28
La función de transferencia 𝑎𝑎𝑖𝑖 (t) = fi (𝑎𝑎𝑖𝑖 (𝑡𝑡 − 1), ℎ𝑖𝑖 (t) ) de la neurona i en función
de su estado anterior 𝑎𝑎𝑖𝑖 (𝑡𝑡 − 1) y del potencial actual.
Función de salida 𝑦𝑦𝑖𝑖 (𝑡𝑡) = 𝐹𝐹(𝑎𝑎𝑖𝑖 (𝑡𝑡)) que proporciona el estado actual de la salida de
la neurona, en función de su argumento dado por la función de transferencia.
Finalmente la expresión completa, que modela el comportamiento de la neurona en
función de su estado anterior y su potencial actual queda de la forma:
𝑦𝑦𝑖𝑖 (𝑡𝑡) = 𝐹𝐹(𝑓𝑓𝑖𝑖 �𝑎𝑎𝑖𝑖 (𝑡𝑡 − 1), ∂𝑖𝑖 (wij , xj (t)) �)
(1.13)
2.1.5. Modelo neuronal no lineal
En un modelo neuronal estándar se considera que las neuronas pueden trabajar tanto
de forma digital como en el modelo presentado anteriormente, o de forma análoga, dentro
de un intervalo de números. Frecuentemente suelen utilizar modelos con funciones
sigmoidales o hiperbólicas como función de transferencia para este cometido. En
principio, lo que se pretende es realizar una deformación en las líneas de clasificación para
lograr una óptima separación de clases dando un mayor grado de libertad a la red, dado
que una red creada a partir solo de funciones de transferencia lineales solo daría como
resultado una o muchas salidas lineales.
Figura 2-8. Diseño de una red neuronal con funciones de transferencia de tipo lineal
Fuente: Elaboración propia
29
Por ejemplo si se realiza la misma tarea solo cambiando algunas de las funciones
de transferencia de las neuronas por funciones sigmoidales.
Figura 2-9. Diseño de red neuronal con función de transferencia sigmoidal
Fuente: Elaboración propia
Si bien la función sigmoidal no es determinante para realizar dicha tarea ya que se
han diseñado redes con diferentes funciones de transferencia como los de la Tabla 2-2. Se
utiliza la función sigmoidal ya que la función debe ser derivable para poder calcular el
error en la salida de forma más óptima [Hagan, 2014].
Funciones sigmoideas, y sus diferentes tramos:
𝑦𝑦 = 𝑓𝑓(𝑥𝑥 ) =
𝑦𝑦 = 𝑓𝑓(𝑥𝑥 )
1
1+𝑒𝑒 −𝑥𝑥
𝑒𝑒 𝑥𝑥 −𝑒𝑒 −𝑥𝑥
𝑒𝑒 𝑥𝑥 +𝑒𝑒 −𝑥𝑥
, con y ∈ [0, 1]
, con y ∈ [-1, 1]
(1.14)
(1.15)
Este sistema es el más utilizado en modelos multicapa que se analizarán en el
capítulo siguiente, ya que el requisito de trabajar con funciones diferenciales lo suele
imponer la regla de aprendizaje, como sucede con el famoso algoritmo BackPropagation
[Del Brío, 2004].
30
Existen a lo menos 6 tipos de funciones de transferencia usadas, los cuales se
detallarán a continuación:
Tabla 2-2. Distintas funciones de transferencia utilizadas en redes neuronales
Función
Rango
𝑦𝑦 = 𝑥𝑥
[−∞, +∞]
𝑦𝑦 = ±(𝑥𝑥 )
{−1, +1}
−1, 𝑠𝑠𝑠𝑠 𝑥𝑥 < −1
𝑦𝑦 = �𝑥𝑥, 𝑠𝑠𝑠𝑠 + 1 ≤ 𝑥𝑥 ≤ −1
+1, 𝑠𝑠𝑠𝑠 𝑥𝑥 > +1
[−1, +1]
Identidad
Escalón
𝑦𝑦 = 𝐻𝐻(𝑥𝑥)
{ 0, +1}
Lineal a
tramos
Sigmoidea
𝑦𝑦 =
1
1 + 𝑒𝑒 −𝑥𝑥
[0, +1]
[−1, +1]
Gaussiana
𝑦𝑦 = 𝐴𝐴𝑒𝑒 −𝐵𝐵𝐵𝐵
2
[0, +1]
Sinusoidal
𝑦𝑦 = 𝐴𝐴 sin(𝑤𝑤𝑤𝑤 + 𝜑𝜑)
[−1, +1]
Grafico
31
2.2. ARQUITECTURA DE LAS REDES NEURONALES
La arquitectura de una red neuronal, viene siendo la distribución y conexión de los
diversos nodos dentro de una red [Del Brío, 2004], en el cual la información sigue un solo
sentido de propagación. La primera red neuronal denominada Perceptrón tiene la siguiente
forma:
Sensores
𝑿𝑿𝟏𝟏
𝑿𝑿𝟐𝟐
𝑿𝑿𝟑𝟑
𝑿𝑿𝟒𝟒
Entradas
𝒚𝒚𝟏𝟏
𝒚𝒚𝟐𝟐
𝒚𝒚𝟑𝟑
𝒚𝒚𝟒𝟒
𝒚𝒚𝟓𝟓
𝒚𝒚𝟔𝟔
Información
Figura 2-10. Modelo del perceptrón simple
Fuente: Elaboración propia
Donde el sensor recibe la información del exterior, hay una capa neuronal de los
nodos que reciben los datos o estímulos de entrada [Basogain, 2008], procesan la
información acorde a la función de transferencia utilizada y envían un único dato de salida
a todas las neuronas de la capa siguiente, la cual se denomina capa de salida. Como se
explicó antes esta red es muy útil para discriminar patrones separables linealmente
[Izaurieta, 2014].
Si se recuerda la tabla de verdad del nodo anterior imitando el funcionamiento de la
compuerta NAND podemos ver gráficamente que la separación de discriminantes se
puede realizar de forma lineal separándose los resultados en 2 clases:
32
𝒙𝒙𝟐𝟐
CLASE 1
0
1 1
CLASE 0
0 1
1
0
1
𝒙𝒙𝟏𝟏
Figura 2-11. NAND sobre el plano
Fuente: Elaboración propia
Si se realiza una función lógica de tipo no separable linealmente como la xOR por
ejemplo, cuya tabla de verdad y simbologías, vienen de la forma:
Tabla 2-3. Tabla de verdad de una compuerta NAND
Compuerta Lógica
A
B
F
0
0
0
0
1
1
1
0
1
1
1
0
Tabla de verdad
33
Gráficamente no se puede separar de forma lineal en 2 clases, como el ejemplo
anterior:
B
1
1
0
0
0
1
0
1
A
Figura 2-12. Grafica de una compuerta xOR sobre el plano
Fuente: Elaboración propia
Como se aprecia, es fácil demostrar que el nodo neuronal cumple con la separación
de variables sobre el plano, en la mayoría de compuertas lógicas, llama la atención que la
red necesite ser más compleja para emular una compuerta de tipo xOR pese a que esta
última se diferencia de la OR solamente en la primera línea.
34
2.2.1. El perceptrón multicapa
Considerar ahora una estructura neuronal multicapa, si bien existen varios tipos de
red multicapa dadas sus diferentes conexiones entre sus diversos nodos, la que se estudiará
será la de tipo unidireccional, representada de la forma:
𝒘𝒘11,1
𝑿𝑿𝟏𝟏
𝑿𝑿𝟐𝟐
𝑿𝑿𝒏𝒏
𝒃𝒃11
𝒘𝒘12,2
𝒃𝒃12
𝒘𝒘1𝑠𝑠,𝑛𝑛
𝒚𝒚11
𝒚𝒚12
𝒚𝒚1𝑛𝑛
𝒃𝒃13
Capa de entrada
𝒚𝒚12
2
𝒘𝒘1,1
2
𝒘𝒘1,2
2
𝒘𝒘1,𝑛𝑛
𝒃𝒃12
𝒘𝒘22,1
𝒘𝒘22,2
𝒘𝒘22,𝑛𝑛
𝒃𝒃22
𝒘𝒘2𝑠𝑠,2 𝒘𝒘2
𝑠𝑠,1
𝒘𝒘2𝑠𝑠,𝑛𝑛
𝒚𝒚22
𝒚𝒚23
3
𝒘𝒘1,1
3
𝒘𝒘1,2
3
𝒘𝒘1,𝑛𝑛
𝒃𝒃13
𝒘𝒘32,1
𝒘𝒘32,2
𝒘𝒘32,𝑛𝑛
𝒘𝒘3𝑠𝑠,2
𝒘𝒘3𝑠𝑠,𝑛𝑛
𝒃𝒃23
𝒃𝒃32
𝒘𝒘3𝑠𝑠,1
𝒚𝒚13
𝒚𝒚32
𝒚𝒚33
𝒃𝒃33
Capas ocultas
4
𝒘𝒘1,1
4
𝒘𝒘1,2
4
𝒘𝒘1,𝑛𝑛
𝒘𝒘42,2
𝒃𝒃14
𝒘𝒘42,1
𝒘𝒘4𝑠𝑠,𝑛𝑛
𝒚𝒚14
𝒚𝒚42
𝒃𝒃42
Capa de Salida
Figura 2-13. Modelo del perceptrón multicapa
Fuente: Elaboración propia
Como se precia en el esquema, se le denomina a cada fila de neuronas se le denomina
“capa”, la capa de neuronas que recibe el dato de entrada se le denomina “Capa de
entrada”, y las neuronas que expulsan el valor de salida de la red se le denomina “Capa de
salida” las capas intermedias de la red se denominan “capas ocultas” [Hagan, 2014].
La cantidad de capas ocultas dependerán del nivel de complejidad del elemento o
problema a identificar [Izaurieta, 2014].
Ahora se agrega un nuevo subíndice en la parte superior de todas las variables. Si
tomamos como ejemplo el primer nodo de la segunda capa (capa oculta), este recibe el
dato de todas las neuronas pre sinápticas de subíndice superior “1”, cada una de sus
dendritas de conexión tiene un peso asociado a los valores de entrada al nodo, para 𝒚𝒚11 ,
2
correspondería el peso 𝒘𝒘1,1
, que se denominaría como el peso de la primera neurona
ubicada en la segunda capa que indica importancia relativa de la entrada 𝒚𝒚11 [Hagan, 2014]
35
El procesamiento a nivel matemático de la red se realiza a través de matrices,
planteado de esta forma la matriz que agrupa los pesos sinápticos de la segunda capa
neuronal, o lo que sería la primera capa oculta queda de la forma:
𝑤𝑤1,1
𝑤𝑤 = �𝑤𝑤2,1
𝑤𝑤𝑠𝑠,1
𝑤𝑤1,2
𝑤𝑤2,2
𝑤𝑤𝑠𝑠,2
𝑤𝑤1,𝑛𝑛
𝑤𝑤2,𝑛𝑛 �
𝑤𝑤𝑠𝑠,𝑛𝑛
(2.16)
El proceso se repite para todas las capas ocultas, las cuales tienen un nivel de
procesamiento matemático, en cuanto a las ecuaciones que se trabajan en la red, si bien se
aplica el mismo teorema antes visto, ahora se modifica la forma en la que se presenta.
Tomando como ejemplo un nodo:
Forma anterior:
𝒚𝒚12 = (�𝒘𝒘𝟐𝟐𝟏𝟏,𝟏𝟏 𝒚𝒚𝟏𝟏𝟏𝟏 + 𝒘𝒘𝟐𝟐𝟏𝟏,𝟐𝟐 𝒚𝒚𝟏𝟏𝟐𝟐 + 𝒘𝒘𝟐𝟐𝟐𝟐,𝒏𝒏 𝒚𝒚𝟏𝟏𝒏𝒏 � + 𝒃𝒃𝟐𝟐𝟏𝟏 )
(2.17)
Nueva forma:
𝑦𝑦12 = 𝑓𝑓 ��𝒘𝒘𝟐𝟐𝟏𝟏,𝟏𝟏
𝒘𝒘𝟐𝟐𝟏𝟏,𝟐𝟐
𝒚𝒚𝟏𝟏𝟏𝟏
𝒘𝒘𝟐𝟐𝟐𝟐,𝒏𝒏 � �𝒚𝒚𝟏𝟏𝟐𝟐 � + 𝒃𝒃𝟐𝟐𝟏𝟏 �
𝒚𝒚𝟏𝟏𝒏𝒏
(2.18)
36
2.2.2. xOR con red multicapa
Dado que la función xOR en el plano no permite una separación lineal de las
variables con un nodo neuronal, se necesita del procesamiento de una red con una
complejidad un poco superior, utilizando una red de una capa oculta con 2 neuronas.
2
𝒘𝒘1,1
=1
𝒃𝒃11
𝒃𝒃12
𝒘𝒘22,2 = 1
2
𝒘𝒘1,2
=1
𝒘𝒘22,2
=1
𝒚𝒚12
3
𝒘𝒘1,1
=1
𝒃𝒃12 = −0.5
𝒚𝒚22
3
𝒘𝒘1,2
𝒃𝒃13 = −0.5
𝒃𝒃22 = −1.5
Figura 2-14. Simulación de una compuerta xOR con redes neuronales
Fuente: Elaboración propia
En esta arquitectura se puede ver que las neuronas de la primera Capa tienen como
salida el mismo valor de las entradas, todas trabajan con una función de tipo escalón como
la descrita en la Figura 2-5.
37
Describiendo cada valor de 𝑥𝑥1 y 𝑥𝑥2 para los valores de la tabla de verdad:
𝑠𝑠𝑠𝑠, 𝑥𝑥1 = 0; 𝑥𝑥2 = 0
2
𝑦𝑦12 = 𝐹𝐹 ��𝑤𝑤1,1
2
𝑦𝑦22 = 𝐹𝐹 ��𝑤𝑤2,1
𝑦𝑦13 = 𝐹𝐹 �[𝑤𝑤13
𝑠𝑠𝑠𝑠, 𝑥𝑥1 = 0; 𝑥𝑥2 = 1
2
𝑦𝑦12 = 𝐹𝐹 ��𝑤𝑤1,1
2
𝑦𝑦22 = 𝐹𝐹 ��𝑤𝑤2,1
𝑦𝑦13 = 𝐹𝐹 �[𝑤𝑤13
𝑥𝑥1
0
2
𝑤𝑤1,2
� � 𝑥𝑥 � +𝑏𝑏12 � = 𝑦𝑦12 = 𝐹𝐹 �[1 1] � � − 0.5� = 𝐹𝐹 (−0.5) = 0
0
2
𝑥𝑥1
0
2
𝑤𝑤2,2
� � 𝑥𝑥 � +𝑏𝑏22 � = 𝑦𝑦22 = 𝐹𝐹 �[1 1] � � − 1.5� = 𝐹𝐹 (−1.5) = 0
0
2
𝑤𝑤23 ] �
𝑦𝑦12
� +𝑏𝑏13 � = 𝑦𝑦13 = 𝐹𝐹 �[1
𝑦𝑦22
∴ 𝑦𝑦13 = 0
0
−1] � � − 0.5� = 𝐹𝐹(−0.5) = 0
0
𝑥𝑥1
0
2
𝑤𝑤1,2
� � 𝑥𝑥 � +𝑏𝑏12 � = 𝑦𝑦12 = 𝐹𝐹 �[1 1] � � − 0.5� = 𝐹𝐹 (0.5) = 1
2
1
𝑥𝑥1
0
2
𝑤𝑤2,2
� � 𝑥𝑥 � +𝑏𝑏22 � = 𝑦𝑦22 = 𝐹𝐹 �[1 1] � � − 1.5� = 𝐹𝐹 (−0.5) = 0
2
1
𝑤𝑤23 ] �
𝑦𝑦12
1
� +𝑏𝑏13 � = 𝑦𝑦13 = 𝐹𝐹 �[1 −1] � � − 0.5� = 𝐹𝐹 (0.5) = 1
0
𝑦𝑦22
∴ 𝑦𝑦13 = 1
𝑠𝑠𝑠𝑠, 𝑥𝑥1 = 1; 𝑥𝑥2 = 0.
2
𝑦𝑦12 = 𝐹𝐹 ��𝑤𝑤1,1
2
𝑦𝑦22 = 𝐹𝐹 ��𝑤𝑤2,1
𝑦𝑦13 = 𝐹𝐹 �[𝑤𝑤13
𝑥𝑥1
1
2
𝑤𝑤1,2
� � 𝑥𝑥 � +𝑏𝑏12 � = 𝑦𝑦12 = 𝐹𝐹 �[1 1] � � − 0.5� = 𝐹𝐹 (0.5) = 1
0
2
𝑥𝑥1
1
2
𝑤𝑤2,2
� � 𝑥𝑥 � +𝑏𝑏22 � = 𝑦𝑦22 = 𝐹𝐹 �[1 1] � � − 1.5� = 𝐹𝐹 (−0.5) = 0
0
2
𝑤𝑤23 ]
�
𝑦𝑦12
3
3
( )
[
] 1
2 � +𝑏𝑏1 � = 𝑦𝑦1 = 𝐹𝐹 � 1 −1 �0� − 0.5� = 𝐹𝐹 0.5 = 1
𝑦𝑦2
∴ 𝑦𝑦13 = 1
38
𝑠𝑠𝑠𝑠, 𝑥𝑥1 = 1; 𝑥𝑥2 = 1.
2
𝑦𝑦12 = 𝐹𝐹 ��𝑤𝑤1,1
2
𝑦𝑦22 = 𝐹𝐹 ��𝑤𝑤2,1
𝑦𝑦13 = 𝐹𝐹 �[𝑤𝑤13
𝑥𝑥1
1
2
𝑤𝑤1,2
� � 𝑥𝑥 � +𝑏𝑏12 � = 𝑦𝑦12 = 𝐹𝐹 �[1 1] � � − 0.5� = 𝐹𝐹 (1.5) = 1
2
1
𝑥𝑥1
1
2
𝑤𝑤2,2
� � 𝑥𝑥 � +𝑏𝑏22 � = 𝑦𝑦22 = 𝐹𝐹 �[1 1] � � − 1.5� = 𝐹𝐹 (0.5) = 1
2
1
𝑤𝑤23 ] �
𝑦𝑦12
� +𝑏𝑏13 � = 𝑦𝑦13 = 𝐹𝐹 �[1
𝑦𝑦22
∴ 𝑦𝑦13 = 0
1
−1] � � − 0.5� = 𝐹𝐹(−0.5) = 0
1
Agrupando los valores en la tabla:
Tabla 2-4. Valores de Entrada/Salida de la red "xOR"
𝒙𝒙𝟏𝟏
0
𝒙𝒙𝟐𝟐
0
𝒚𝒚𝟑𝟑𝟏𝟏
0
1
1
1
0
1
1
1
0
0
39
Poniendo 𝑥𝑥1 y 𝑥𝑥2 sobre el plano:
1 1
0
0 0
1
0
1
Figura 2-15. Grafica de la red neuronal simulando una compuerta xOR
Fuente: Elaboración propia
Dependiendo de la tarea a realizar y el nivel de complejidad de la misma se necesitará
una u otra arquitectura neuronal:
Tabla 2-5. Tipos de regiones de decisión en el Perceptrón
Fuente: Redes neuronales y sistemas borrosos B. Martín del Brío, A. Sanz Molina
Arquitectura
Región de
xOR
Decisión
Híper Plano
Clasificación
A
B
B
A
A
B
B
A
A
B
B
A
(Dos regiones)
Regiones
Polinomiales
Convexas
Regiones
Arbitrarias
A
B
A
B
A
B
Regiones más generales
40
Las neuronas artificiales pueden trabajar con diferentes funciones de transferencia,
por ejemplo una red multicapa, puede trabajar con diferentes tipos de procesamiento en
cada capa, una de ellas puede utilizar funciones de transferencia “hard limit” o escalón y
otra puede trabajar con Función Sigmoidea, esto le otorga mayor flexibilidad a la red
[Hagan, 2014].
La cantidad de neuronas de entrada y salida como la cantidad de capas ocultas y las
respectivas funciones de transferencia de cada capa, se determinan dependiendo del
problema a solucionar con la red.
-
Cantidad de neuronas de entrada
=
Variables de muestreo del problema
-
Cantidad de neuronas de salida
=
Datos de respuesta necesarios
-
Cantidad de capas Ocultas
=
Complejidad del problema a resolver
Como los comportamientos que se quieren emular con este tipo de tecnologías no
son de tipo estático (como los ejemplos anteriores) sino más bien, de tipo dinámico. Se
necesitan algunos bloques más para dar forma a la red final.
2.2.3. Recurrent Networks
Una red neuronal de tipo recurrente o Recurrent Network integra bucles de
realimentación dentro del sistema permitiendo que la información de salida se mantenga
dentro de la estructura general, ya sea modificando los pesos Sinápticos o Bias dentro del
proceso de entrenamiento [Hagan, 2014].
Uno de los bloques que ayuda a generar esta realimentación es el de retardo o Delay,
el cual se ilustra en la figura:
41
𝒖𝒖(𝒕𝒕)
𝒚𝒚(𝒕𝒕)
𝒚𝒚(𝟎𝟎)
𝑦𝑦(𝑡𝑡) = 𝑢𝑢 (𝑡𝑡 − 1)
Figura 2-16. Bloque de retardo (Delay)
Fuente: Neural Network Desing, Martin T. Hagan
En este bloque se produce un retraso de la salida descrita por 𝑦𝑦(𝑡𝑡) y en función de la
entrada 𝑢𝑢(𝑡𝑡) propuesta por la ecuación:
𝑦𝑦(𝑡𝑡) = 𝑢𝑢 (𝑡𝑡 − 1)
(2.19)
Por lo tanto la salida es equivalente a la entrada retrasada en el tiempo (los cuales
deben ser de tipo discreto), donde se necesita la condición inicial t = 0 indicada en la flecha
ascendente del bloque de la figura [Hagan, 2014].
Otro bloque esencial para la construcción de redes de tipo recurrente, es el integrador,
descrito en la figura:
42
𝒚𝒚(𝒕𝒕)
𝒖𝒖(𝒕𝒕)
𝒚𝒚(𝟎𝟎)
𝑡𝑡
𝑦𝑦(𝑡𝑡) = � 𝑢𝑢 (𝑡𝑡) 𝑑𝑑𝑑𝑑 + 𝑦𝑦(0)
0
Figura 2-17. Bloque Integrador
Fuente: Neural Network Desing, Martin T. Hagan
Finalmente introduciendo la red de tipo recurrente quedaría de la forma:
Capa recurrente:
𝑾𝑾
𝒚𝒚(𝒕𝒕 + 𝟏𝟏)
Condición
Inicial
𝑷𝑷
𝒚𝒚(𝒕𝒕)
𝒃𝒃
Figura 2-18. Red neuronal de capa recurrente
Fuente: Neural Network Desing, Martin T. Hagan
Condición inicial: 𝑦𝑦(0) = 𝑃𝑃
𝑦𝑦(𝑡𝑡 + 1) = 𝑓𝑓(𝑊𝑊 ∙ 𝑦𝑦(0) + 𝑏𝑏)
(2.20)
43
La elección o combinación de los distintos tipos de arquitecturas neuronales
dependerá del problema a seleccionar [Hagan, 2014], este bloque suele usarse en redes
neuronales de tipo Times Series (series de tiempo) las cuales suelen tener un
comportamiento dinámico donde la entrada de la red debe ser comparada de forma
recurrente con la salida anterior en función del tiempo, este tratamiento se emplea en la
sección 2.
2.2.4. Ejemplo ilustrativo
Se requiere un clasificador de fruta para la selección en el proceso de empaques, para
este ejemplo se dispone de Manzanas y Naranjas, se sabe que estas frutas tienen ciertas
características determinantes para poder ser diferenciadas.
El proceso empieza en la cinta transportadora, las frutas son dirigidas a través de una
serie de sensores que toman mediciones de la forma, textura y peso de la misma. El sensor
de forma emitirá un 1 si la fruta es aproximadamente redonda y un -1 si es más elíptica.
El sensor de textura emitirá un 1 si la superficie de la fruta es suave y un -1 si es áspera y
finalmente el sensor de peso emitirá un 1 si la fruta es de más de una libra y un -1 si es
menos de una libra.
44
Todos estos datos se envían a una red neuronal que procesa la información y decide
si se trata de una u otra fruta para luego ser derivadas a sectores distintos.
Red
Neuronal
Sensor
Clasificador
Manzanas
Naranjas
Figura 2-19. Prototipo de una red neuronal clasificadora de frutas
Fuente: Neural Network Desing, Martin T. Hagan
Por cada fruta del conjunto de sensores, se puede trazar una serie de vectores
tridimensionales donde el primero representa la forma, el segundo la textura y el último
el peso.
Presentando la matriz de entradas:
𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹
𝑦𝑦 = �𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇 �
𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃
Donde:
1
𝑦𝑦1 = �−1�
−1
Naranja
1
𝑦𝑦2 = � 1 �
−1
Manzana
45
Para este caso se utilizará un perceptrón con 3 neuronas de entrada en la primera
capa y una capa de salida conformada por una única neurona, donde la función de salida
quedaría de la forma:
𝑦𝑦(𝑥𝑥) = 𝐹𝐹 �[𝑤𝑤1,1
𝑤𝑤1,2
𝑥𝑥1
𝑤𝑤1,3 ] �𝑥𝑥2 � + 𝑏𝑏�
𝑥𝑥3
(2.21)
Para seleccionar los valores de pesos sinápticos y Bias, se procede a presentar los
valores de entrada para cada una de las frutas en forma de vectores:
z
Límite de decisión
y
(1,-1,-1)
x
𝑦𝑦2
(Naranja)
(1, 1,-1)
𝑦𝑦1
(Manzana)
Figura 2-20. Plano 3D de vectores
Fuente: Neural Network Desing, Martin T. Hagan
Se dividen los vectores para 𝑦𝑦1 e 𝑦𝑦2 en el plano, en este caso la división se hace en
el eje Z siendo ésta simétrica. La matriz de pesos se sitúa de forma ortogonal a la división
simétrica de los vectores apuntando al eje y donde se sitúa 𝑦𝑦1 (Manzana) donde queremos
que la salida sea de orden unitario. El Bias será 0 según el modelo de regresión lineal ya
que el límite de decisión pasa por el origen.
46
Por tanto la ecuación final queda:
𝑦𝑦 = 𝐹𝐹 �[0
𝑥𝑥1
𝑥𝑥
1 0] � 2 � + 0�
𝑥𝑥3
(2.22)
Analizando las entradas:
𝑦𝑦 = 𝐹𝐹 �[0
1
1 0] �−1� + 0� = −1 (Naranja)
−1
𝑦𝑦 = 𝐹𝐹 �[0
1
1 0] � 1 � + 0� = 1 (Manzana)
−1
Ahora que sucede si los parámetros de entrada no son ideales, vale decir, si entra una
naranja con forma elíptica (similar a una manzana):
𝑦𝑦 = 𝐹𝐹 �[0
−1
1 0] �−1� + 0� = −1 (Naranja)
−1
De hecho, cualquier vector de entrada que esté más cerca del vector prototipo naranja
que al vector prototipo de manzana (en distancia euclidiana) se clasificará como un naranja
(y viceversa), por lo cual se puede decir que el sistema tiene una cierta tolerancia a fallos
o imperfecciones, lo cual es óptimo en estos sistemas de clasificación [Hagan, 2014].
Este ejemplo simple se puede visualizar a través del software de simulación de
Matlab, introduciendo en la ventana de comandos el comando nnd3pc (Neural Network
Design Demonstration Perceptron Classification)
47
Figura 2-21. Simulación de un perceptrón clasificador
Fuente: Matlab
En él se puede ver la calibración de pesos 𝑤𝑤 = [0 1 0] y el bias b = 0, la misma
que se determinó en el ejemplo teórico.
Al clickear “Go” el programa emula valores para la forma (SHAPE), textura
(TEXTURE) y peso (WEIGHT), según una base de datos interna, luego la fruta se
posiciona bajo el sensor triangular el cual obtiene los parámetros que se grafican en el
plano 3D.
Finalmente la simulacion calcula el valor de salida de la funcion de transferencia y
determina el parámetro de salida donde “p” serán las entradas y “a” será la salida.
48
Figura 2-22. Simulación de un perceptrón clasificador
Fuente: Matlab
2.2.5. Hamming network
Otra forma de clasificar patrones es a través de la red de Hamming (Hamming
Network), esta red fue específicamente diseñada para resolver problemas de
reconocimiento de patrones binarios (donde cada elemento del vector de entrada tiene solo
dos posibles valores, en este ejemplo 1 o -1. En esta red se utilizan capas feedforward y
recurrent (feedback) layers.
En este caso la red tiene como objetivo decidir que vector prototipo podrá ser el más
cercano al vector de entrada. Esta decisión se toma en la salida de la capa recurrente donde
en este caso hay una sola. Cuando la capa recurrente converge, solo habrá una neurona
con salida distinta de cero. Esta indica el patrón de prototipo más cercano al vector de
entrada.
49
La red queda de la forma:
Feedforward Network
𝑥𝑥1
𝑥𝑥2
𝑥𝑥3
Recurrent Network
1
𝑤𝑤1,𝑛𝑛
𝑦𝑦 1
𝑏𝑏1
1
𝑤𝑤2,𝑛𝑛
𝑤𝑤 2
𝑦𝑦 2
𝑏𝑏2
𝑦𝑦 1 = 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝(𝑤𝑤𝑛𝑛1 ∙ 𝑥𝑥𝑛𝑛 + 𝑏𝑏𝑛𝑛 )
𝑦𝑦 2 (0) = 𝑦𝑦 1 ;
𝑦𝑦 2 (𝑡𝑡 + 1) = 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝(𝑤𝑤𝑛𝑛1 ∙ 𝑦𝑦 1 (𝑡𝑡))
Figura 2-23. Red Neuronal Hamming para reconocimiento de patrones
Fuente: Elaboración propia
Calibración de Feedforward layer:
La capa de procesamiento Feedforward realiza una correlación, entre cada uno de
los patrones prototipo y el patrón de entrada respectivo. Para que la capa realice esta
correlación, las finas de matrices W, se establecen en función de los patrones de prototipo.
Para nuestro ejemplo de reconocimiento de Manzanas/Naranjas quedaría:
𝑥𝑥𝑛𝑛1
1
𝑤𝑤 = � 2 � = �
1
𝑥𝑥𝑛𝑛
1
−1 −1
�
1 −1
Para determinar el valor de Bias, se consideran la cantidad de vectores de entrada
𝑥𝑥𝑛𝑛 , siendo n el valor de dicho parámetro:
3
𝑏𝑏𝑛𝑛 = � �
3
50
Habiendo determinado estos parámetros la salida de la capa Feedforward queda de
la forma:
𝑦𝑦 1 = 𝑤𝑤𝑛𝑛1 ∙ 𝑥𝑥𝑛𝑛 + 𝑏𝑏𝑛𝑛 = �
𝑥𝑥𝑛𝑛1
𝑥𝑥𝑛𝑛1
3
�
�
�
𝑥𝑥
+
=
�
3
𝑥𝑥𝑛𝑛2
𝑥𝑥𝑛𝑛2
+
+
3
�
3
(2.23)
El valor de salida 𝑦𝑦 1 vendra siendo uno de los parámetros de entrada de la capa
“Recurrent”
Calibración de Recurrent Layer:
La capa Recurrente del perceptrón Hamming se suele conocer como la capa
“competitiva”. Las neuronas en esta capa inician con las salidas de la capa feedforward,
la cual indica la correlación entre los patrones de prototipo y el vector de entrada x, luego
en este punto las neuronas compiten entre sí para determinar un ganador. Dado que luego
de esta competencia solo una neurona tendrá una salida distinta de cero. La neurona
ganadora indica que categoría de entrada se le presentó a la red las cuales en este caso
serían una Manzana o una Naranja [Hagan, 2014]. Las ecuaciones que describen esta
competencia vienen dadas por:
Condición inicial:
Y la posterior función 𝑦𝑦 2 (𝑡𝑡 + 1)
𝑦𝑦 2 (0) = 𝑦𝑦 1
𝑦𝑦 2 (𝑡𝑡 + 1) = 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝(𝑤𝑤𝑛𝑛1 ∙ 𝑦𝑦 1 (𝑡𝑡))
(2.24)
Recordar que la función de transferencia “poslin” es de tipo lineal para valores
positivos y cero para valores negativos.
Función de transferencia Positive linear (poslin)
Donde:
𝑦𝑦(𝑥𝑥 ) = 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝(𝑛𝑛)
𝑦𝑦(𝑥𝑥 ) = 0 , 𝑠𝑠𝑠𝑠 𝑛𝑛 < 0
𝑦𝑦(𝑥𝑥 ) = 𝑛𝑛 , 𝑠𝑠𝑠𝑠 𝑛𝑛 ≥ 0
51
La matriz de pesos 𝑤𝑤 2 tiene la forma:
𝑤𝑤 2 = �
Donde 𝜀𝜀 es un número menos que
recurrente o Recurrent Layer.
1
𝑠𝑠−1
1 −𝜀𝜀
�,
−𝜀𝜀
1
y S es el número de neuronas en la capa
Si realizamos una iteración de la capa recurrente quedaría:
1
𝑦𝑦 𝑡𝑡 + 1) = 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 ��
−𝜀𝜀
2(
𝑦𝑦12 (𝑡𝑡)
−𝜀𝜀 2
� 𝑦𝑦 (𝑡𝑡)� = 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 �� 2
1
𝑦𝑦2 (𝑡𝑡)
− −𝜀𝜀𝑦𝑦22 (𝑡𝑡)
��
− −𝜀𝜀𝑦𝑦12 (𝑡𝑡)
(2.25)
Cada elemento de entrada a la capa recurrente se reduce por la misma fracción que
el otro elemento entrante. De esta forma el elemento más grande se reducirá en menos, y
el elemento más pequeño se reducirá en más, por lo tanto, la diferencia entre el elemento
grande y el pequeño aumentará. El efecto que tiene esta capa es poner a 0 todas las salidas
de neuronas, excepto la que tiene el valor inicial más grande, el cual corresponde al patrón
prototipo más cercano en la distancia de Hamming.
Para ilustrar el efecto de la red, aplicaremos las entradas captadas por el sensor que
tomo los datos de la naranja elíptica.
Donde:
−1
𝑥𝑥𝑛𝑛 = �−1�
−1
La salida de la primera capa (feedforward layer) quedará:
𝑦𝑦 1 = �
1 −1
1 1
−1
( 1 +
−1
3
� �−1� + � � = �
(−1 +
3
−1
−1
3)
4
�=� �
3)
2
Estos parámetros vendrán siendo las condiciones iniciales de la segunda capa
(Recurrent Layer). Según los valores de 𝑤𝑤 2, los cálculos de la ecuación antes propuesta
52
1
nos dan un 𝜀𝜀 = (cualquier número menor que 1 bastaría, según la propuesta anterior).
2
La primera iteración de la red recurrente sería:
𝑦𝑦 2 (1) = 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝�𝑤𝑤 2 𝑦𝑦 2 (0)� = �
La segunda iteración:
𝑦𝑦 2 (2) = 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝�𝑤𝑤 2 𝑦𝑦 2 (1)� = �
1
−0,5 4
𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 ��
� � ��
−0,5
1
2
(2.26)
1
−0,5 3
𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 ��
� � ��
−0,5
1
0
(2.27)
3
3
𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃 �� �� = � �
0
0
3
3
�� = � �
𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃 ��
−1.5
0
De esta forma según lo planteado en las condiciones iniciales de la Red Hamming
si:
𝑦𝑦12 (2) > 0
𝑦𝑦22 (2) = 0
Entonces se está en presencia de una Naranja, tal como la representación anterior,
por lo que se puede confirmar el funcionamiento de la red.
53
Al igual que con el perceptrón clasificador antes propuesto, la red Hamming tiene
un ejemplo en Matlab ejecutando el comando nnd3hamc (Neural Network Design
Demonstration Hamming Classification)
Figura 2-24. Simulación de un perceptrón clasificador Hamming
Fuente: Matlab
54
En la simulación se muestran los vectores de 𝑤𝑤 1 , 𝑤𝑤 2 𝑦𝑦 𝑏𝑏1 , las cuales se calcularon
previamente. Al presionar “Go” el programa nuevamente simulará valores próximos a los
de una fruta dentro de los parámetros establecidos y hará los cálculos realizados en el
ejemplo anterior.
Figura 2-25. Simulación de un perceptrón clasificador Hamming
Fuente: Matlab
El gráfico enseña la convergencia de los vectores prototipo dando proximidad al
vector “naranja” el cual es efectivamente el objeto que estaba en la cinta transportadora.
55
2.3. REGLA DE APRENDIZAJE
Se denomina regla de aprendizaje al método por el cual se modifican los pesos
sinápticos y el Bias de la cada una de las neuronas que componen la red. El propósito de
la regla de aprendizaje es capacitar al perceptrón para realizar una tarea en específico,
éstas se componen de 3 grupos.
-
Aprendizaje supervisado.
-
Aprendizaje por refuerzo.
-
Aprendizaje no supervisado
En el aprendizaje supervisado se entrena a la red mediante ejemplos, se ingresan los
valores de entradas 𝑥𝑥𝑖𝑖 y se comparan con los valores de salida esperados “ 𝑡𝑡𝑖𝑖 ” u objetivos
(targets). A medida que se ingresan los conjuntos de entradas a la red, el valor de salida
se compara con los valores esperados. La regla de aprendizaje entonces, se encarga de
corregir los pesos sinápticos y el bias hasta acercar la salida de la red 𝑦𝑦𝑖𝑖 al valor esperado
𝑡𝑡𝑖𝑖 .
El aprendizaje por refuerzo se asimila al supervisado, con la diferencia que en éste
no se cuenta con la salida correcta para cada conjunto de entradas de la red, si no que se
establece una “nota” (o puntaje) que se asocia con el rendimiento de la red sobre alguna
tarea. El aprendizaje por refuerzo es mucho menos común que el supervisado, pero suele
ser más adecuado para controlar aplicaciones en sistemas de control [Hagan, 2014].
En el aprendizaje no supervisado (auto-organizado), los pesos sinápticos y el Bias se
modifican solo en respuesta al conjunto de entradas de la red [Hagan, 2014], no existe
ningún maestro externo que le indique a la red si está operando correctamente como en
los modelos anteriores. Parece ser un método poco práctico de entrenar una red, pero ésta
debe descubrir por si misma rasgos comunes, regularidades, correlaciones o categorías en
los datos de entrada para incorporar modificaciones en su estructura interna [Del Brio,
2004]. Es por esto que las redes de aprendizaje no supervisado utilizan algoritmos que
realizan dichas funciones y tienden a categorizar esta discriminación de entradas en un
número finito de clases [Hagan, 2014].
56
2.3.1. Conjuntos de entrenamiento
Dentro de los parámetros para entrenar una red supervisada se establecen los
conjuntos de entrenamiento, los cuales vienen siendo los valores de entrada con su
respectivo valor de salida esperado.
{𝑥𝑥2 , 𝑡𝑡1 }, {𝑥𝑥2 , 𝑡𝑡2 }, … , {𝑥𝑥𝑛𝑛 , 𝑡𝑡𝑛𝑛 },
(3.28)
Donde:
𝑥𝑥𝑛𝑛 : Corresponde a una entrada de una red neuronal.
𝑡𝑡𝑛𝑛 : Corresponde a su respectiva salida esperada.
2.3.2. Límite de decisión
El límite de decisión se determina cuando los vectores de entrada de la red para los
cuales la salida neta de la regla de propagación es 0. Esto nos sirve para determinar la línea
de separación de clases antes vista.
Por ejemplo, si se toma una red de una sola neurona, para determinar su límite de
decisión.
𝑥𝑥1
𝑥𝑥2
𝑤𝑤1,1
𝑤𝑤1,2
𝑏𝑏
Figura 2-26. Nodo neuronal de 2 entradas con Bias
Fuente: elaboración propia
57
Siendo n el valor de la regla de propagación.
𝑛𝑛 = 𝑤𝑤𝑖𝑖𝑇𝑇 𝑥𝑥𝑖𝑖 + 𝑏𝑏 = 𝑤𝑤1,1 𝑥𝑥1 + 𝑤𝑤1,2 𝑥𝑥2 + 𝑏𝑏 = 0
(3.29)
Una forma de comprobar el límite de decisión es asignando valores concretos a los
parámetros de calibración expuestos en la ecuación (3.2).
𝑤𝑤1,1 = 1,
𝑤𝑤1,2 = 1,
𝑏𝑏 = −1
El límite de decisión quedaría:
𝑛𝑛 = 𝑤𝑤1,1 𝑥𝑥1 + 𝑤𝑤1,2 𝑥𝑥2 + 𝑏𝑏 = 1𝑥𝑥1 + 1𝑥𝑥2 − 1 = 0
(3.30)
Esto define la línea que separa los límites de las entradas para cada valor de salida,
porque a un lado de la línea estarán los vectores cuya salida será 0 y del otro lado los que
asignen una salida de tipo 1. Para dibujar esta línea es necesario encontrar los puntos de
intersección de los vectores 𝑥𝑥1 y 𝑥𝑥2 . Para hallar la intersección de 𝑥𝑥2 se debe hacer 𝑥𝑥1 =
0.
Si 𝑥𝑥1 = 0
𝑛𝑛 = 𝑤𝑤1,1 𝑥𝑥1 + 𝑤𝑤1,2 𝑥𝑥2 + 𝑏𝑏
𝑤𝑤1,1 0 + 𝑤𝑤1,2 𝑥𝑥2 + 𝑏𝑏 = 0
𝑥𝑥2 = −
𝑏𝑏
−1
=−
=1
𝑤𝑤1,2
1
Luego para encontrar la intersección de 𝑥𝑥1 se debe realizar el mismo procedimiento
pero con 𝑥𝑥2 = 0.
Si 𝑥𝑥2 = 0.
𝑤𝑤1,1 𝑥𝑥1 + 𝑤𝑤1,2 0 + 𝑏𝑏 = 0
𝑥𝑥1 = −
𝑏𝑏
−1
=−
=1
𝑤𝑤1,1
1
58
El resultado de la línea calculada con el límite de decisión antes descrito se ilustra en
la figura posterior.
𝑥𝑥1
𝑤𝑤𝑖𝑖𝑇𝑇 𝑥𝑥𝑖𝑖 + 𝑏𝑏 = 0
𝑦𝑦1 = 1
𝑦𝑦1 = 0
𝑥𝑥2
Figura 2-27. Límite de decisión para una neurona de 2 entradas
Fuente: Neural Network Desing, Martin T. Hagan
Para comprobar la situación se pueden asignar valores para encontrar si
efectivamente las salidas se corresponden con la información que nos da el grafico. Por
ejemplo, para las entradas 𝑥𝑥 = [2 0], la salida de la neurona seria.
2
𝑦𝑦 = 𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻 �[1 1] � � − 1� = 1
0
(3.31)
Para visualizar de forma didáctica el límite de decisión, utilizar Matlab con el
comando “nnd4bd” (Neural Network Design Demonstration Decision Boundaries).
59
2.3.3. Regla de aprendizaje del perceptrón
Ahora que se sabe cómo identificar el límite de decisión de una neurona podemos
aplicar una regla de aprendizaje a la misma. Esta regla es un ejemplo de “aprendizaje
supervisado” en la cual se entrena a la red a través de un conjunto de ejemplos u objetivos.
{𝑥𝑥2 , 𝑡𝑡1 }, {𝑥𝑥2 , 𝑡𝑡2 }, … , {𝑥𝑥𝑛𝑛 , 𝑡𝑡𝑛𝑛 },
Ejemplo Demostrativo
En orden de presentar la regla de aprendizaje se realizará un ejemplo demostrativo
abordando los pasos a seguir para entrenar una neurona donde se suponen los siguientes
parámetros de entrada/objetivo.
1
−1
0
�𝑥𝑥1 = � � , 𝑡𝑡1 = 1� �𝑥𝑥2 = � � , 𝑡𝑡2 = 0� �𝑥𝑥3 = � � , 𝑡𝑡3 = 0�
2
2
−1
Posicionando los vectores de entrada 𝑥𝑥𝑖𝑖 en un gráfico, denotaremos los vectores de
resultado 𝑡𝑡𝑖𝑖 = 0 con círculos de color blanco y los de resultado 𝑡𝑡𝑖𝑖 = 1con círculos de color
negro.
𝑥𝑥1
𝑥𝑥2
Figura 2-28. Conjunto de vectores de entrada x en el plano
Fuente: Neural Network Desing, Martin T. Hagan
Para este ejemplo no se utilizara el factor “bias”, ya que, de esta forma el límite de
decisión pasará por el origen. Hay muchas soluciones para realizar la separación de clases
60
en este ejemplo, modificando la pendiente de la línea que separa los límites de ambas
clases.
Figura 2-29. Posibles límites de decisión para la separación de clases.
Fuente: Neural Network Desing, Martin T. Hagan
Construyendo la regla de aprendizaje
Para entrenar la red es necesario asignar valores aleatorios a los parámetros de
calibración de la red. Para este caso se requieren los valores para una neurona con 2
entradas, 2 pesos sinápticos, una salida y sin “Bias”.
Valores Iniciales de W (Aleatorios):
𝑤𝑤𝑖𝑖 = [1 −0,8]
Se presentan los valores iniciales en la función de transferencia
1
𝑦𝑦1 = 𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻([1 −0,8] � �)
2
𝑦𝑦1 = 𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻(−0,6) = 0
61
Con esto se puede comprobar que la red no se acerca al valor objetivo, la salida es 0,
y el valor objetivo es 1. Por lo que se debe ajustar los valores de pesos sinápticos hasta
corregir el valor de salida.
Gráficamente el límite de decisión de nuestra red queda de la forma
Figura 2-30. Límite de decisión para W inicial
Fuente: Neural Network Desing, Martin T. Hagan
Una forma de realizar este procedimiento es acercando el límite de decisión a la
variable que queremos clasificar, en este caso hay que corregir dicho límite acercando el
1
vector 1𝑤𝑤 al vector de entrada 𝑥𝑥1 = � � .
2
Para esto se añade a 1𝑤𝑤 directamente el parámetro de 𝑥𝑥1 , ya que al hacer esto se
estaría acercando dicho vector
1𝑤𝑤
describir de la forma.
a el parámetro correspondiente, esta regla se puede
Si t = 1 e y = 0
𝑤𝑤𝑛𝑛𝑛𝑛𝑛𝑛 = 𝑤𝑤𝑜𝑜𝑜𝑜𝑜𝑜 + 𝑥𝑥
Aplicando la regla a la red.
𝑤𝑤𝑛𝑛𝑛𝑛𝑛𝑛 = 𝑤𝑤𝑜𝑜𝑜𝑜𝑜𝑜 + 𝑥𝑥 = �
1
2
1
�+� � =� �
−0,8
1,2
2
(3.32)
62
Ilustrando la operación en el gráfico.
Figura 2-31. Modificación del límite de decisión según la regla de aprendizaje
Fuente: Neural Network Desing, Martin T. Hagan
Se puede apreciar el que la línea que define el límite de decisión se ha reposicionado
en un lugar donde clasifica de manera efectiva el valor de entrada que corregimos, pero
su desplazamiento total no fue óptimo para los demás vectores de entrada. Para conseguir
corregir el límite en su totalidad debemos realizar iteraciones de la regla de aprendizaje
con los demás valores de entradas.
El siguiente vector de entrada es 𝑥𝑥2 = �
transferencia:
−1
�, presentándolo en la función de
2
𝑦𝑦1 = 𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻([2 1,2] �
−1
�)
2
𝑦𝑦1 = 𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻(0,4) = 1
El valor objetivo para la entrada 𝑥𝑥1 es 𝑡𝑡2 = 0, y el valor de salida de la función de
transferencia dio como resultado 𝑦𝑦1 = 1, por ende se debe aplicar nuevamente una
variación de la ecuación (3.5).
63
Donde:
Si t = 0 e y = 1
(3.33)
𝑤𝑤𝑛𝑛𝑛𝑛𝑛𝑛 = 𝑤𝑤𝑜𝑜𝑜𝑜𝑜𝑜 − 𝑥𝑥
Aplicando la regla.
𝑤𝑤𝑛𝑛𝑛𝑛𝑛𝑛 = 𝑤𝑤𝑜𝑜𝑜𝑜𝑜𝑜 + 𝑥𝑥 = �
2
3
−1
�−� �= �
�
1,2
−0,8
2
0
Ahora se presenta el vector 𝑥𝑥3 = � � , 𝑡𝑡3 = 0.
−1
𝑦𝑦1 = 𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻([3 −0,8] �
0
�)
−1
𝑦𝑦1 = 𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻(0,8) = 1
Para este caso se debe moditrainificar los pesos sinápticos reemplazando nuevamente
en la ecuación
𝑤𝑤𝑛𝑛𝑛𝑛𝑛𝑛 = 𝑤𝑤𝑜𝑜𝑜𝑜𝑜𝑜 + 𝑥𝑥 = �
3
3
0
�−� �=� �
−0,8
0,2
−1
Por lo que la ecuación final queda de la forma.
𝑥𝑥𝑎𝑎
𝑦𝑦1 = 𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻([3 0,2] �𝑥𝑥 �)
𝑏𝑏
Donde:
1
𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑥𝑥1 = � � ,
2
𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃 𝑥𝑥2 = �
−1
�,
2
1
𝑦𝑦1 = 𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻 �[3 0,2] � �� = 𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻(3,2) = 1
2
−1
𝑦𝑦1 = 𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻 �[3 0,2] � �� = 𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻(−2,6) = 0
2
64
𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃 𝑥𝑥3 = �
0
�,
−1
0
𝑦𝑦1 = 𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻 �[3 0,2] � �� = 𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻𝐻(−0,2) = 0
−1
Gráficamente.
Figura 2-32. Límite de decisión para la red neuronal
Fuente: Neural Network Desing, Martin T. Hagan
Ahora la red esta entrenada y lista para ser usada. Se puede apreciar que la calibración
de la red no es un 100% óptima ya que para parámetros cercanos a 𝑥𝑥3 por la derecha, la
red puede no clasificar correctamente.
Hay 3 reglas para calibrar la red mediante el método antes descrito.
𝑆𝑆𝑆𝑆 𝑡𝑡 = 1 𝑒𝑒 𝑦𝑦 = 0,
𝑆𝑆𝑆𝑆 𝑡𝑡 = 0 𝑒𝑒 𝑦𝑦 = 1,
𝑆𝑆𝑆𝑆 𝑡𝑡 = 𝑦𝑦,
𝑤𝑤𝑛𝑛𝑛𝑛𝑛𝑛 = 𝑤𝑤𝑜𝑜𝑜𝑜𝑜𝑜 + 𝑥𝑥
𝑤𝑤𝑛𝑛𝑛𝑛𝑛𝑛 = 𝑤𝑤𝑜𝑜𝑜𝑜𝑜𝑜 − 𝑥𝑥
𝑤𝑤𝑛𝑛𝑛𝑛𝑛𝑛 = 𝑤𝑤𝑜𝑜𝑜𝑜𝑜𝑜
Las reglas propuestas se pueden expresar como una sola utilizando el término
denominado error (e), el cual se define como:
𝑒𝑒 = 𝑡𝑡 − 𝑦𝑦
(3.34)
65
Ahora se redefinen las reglas.
𝑆𝑆𝑆𝑆 𝑒𝑒 = 1,
𝑆𝑆𝑆𝑆 𝑒𝑒 = −1,
𝑆𝑆𝑆𝑆 𝑒𝑒 = 0,
𝑤𝑤𝑛𝑛𝑛𝑛𝑛𝑛 = 𝑤𝑤𝑜𝑜𝑜𝑜𝑜𝑜 + 𝑥𝑥
𝑤𝑤𝑛𝑛𝑛𝑛𝑛𝑛 = 𝑤𝑤𝑜𝑜𝑜𝑜𝑜𝑜 − 𝑥𝑥
𝑤𝑤𝑛𝑛𝑛𝑛𝑛𝑛 = 𝑤𝑤𝑜𝑜𝑜𝑜𝑜𝑜
Mirando las nuevas expresiones, las primeras 2 se asemejan mucho, donde el signo
de la variable x es exactamente el mismo que el signo que acompaña el valor unitario del
resultado de la variable e, por último la tercera regla se relaciona con un 𝑒𝑒 = 0, por lo que
se pueden escribir las 3 en una sola de la forma.
𝑤𝑤𝑛𝑛𝑛𝑛𝑛𝑛 = 𝑤𝑤𝑜𝑜𝑜𝑜𝑜𝑜 + 𝑒𝑒𝑒𝑒
𝑤𝑤𝑛𝑛𝑛𝑛𝑛𝑛 = 𝑤𝑤𝑜𝑜𝑜𝑜𝑜𝑜 + (𝑡𝑡 − 𝑦𝑦)𝑥𝑥
(3.35)
Esta regla también se extiende al término Bias, donde.
𝑏𝑏𝑛𝑛𝑛𝑛𝑛𝑛 = 𝑏𝑏𝑜𝑜𝑜𝑜𝑜𝑜 + 𝑒𝑒
(3.36)
Este análisis es simple y demostrativo para visualizar de forma clara la calibración
básica de una red neuronal, el problema es que el método de calibración de la red se vuelve
tedioso para entrenar redes neuronales multicapa, las cuales son necesarias para poder
realizar tareas con un mayor grado de complejidad. Para poder realizar esto de forma
autónoma se utiliza el algoritmo que se verá en el capítulo que viene a continuación.
66
2.3.4. Backpropagation
El algoritmo de Backpropagation o propagación regresiva, es una de las formas más
eficientes de entrenamiento autónomo en redes neuronales, ya que al tener redes multicapa
demasiado grandes, es difícil calcular el nivel de error para cada nodo neuronal por la
reacción en cadena que tienen cada uno de estos con el proceso que se hace en cada capa
[Hecht-Nirlsen,91 in Del Brío, 2004].
Antiguamente lo que se realizaba para determinar el ajuste de cada uno de los nodos
era ver de forma secuencial como afectaba el ajuste de cada nodo en el resultado final de
la red, lo que volvía el entrenamiento muy lento, ya que la información se propaga de
forma masiva y muchas veces no es posible determinar con exactitud qué efecto tendrá la
corrección de una neurona en las que le preceden.
Por ejemplo, en la figura se puede apreciar uno de los múltiples caminos que se
pueden afectar de variar los parámetros de una sola neurona, pero no es el único posible
ya que como se observa en la misma red puede haber muchas posibilidades para cada uno
de los nodos.
Figura 2-33. Secuencia de entrenamiento de una red neuronal sin Retro Propagación
Fuente: Elaboración propia
Lo que el algoritmo de retro propagación propone, es realizar un análisis de cada
capa neuronal de forma regresiva, según el nivel de error que se calcule en la capa
posterior, de esta forma se logra optimizar tanto el tiempo del entrenamiento como el nivel
de procesamiento.
67
Lo que se realiza internamente dentro de la red es introducir los parámetros de
entrada que se presentan a la red y comparar la salida de la red con nuestros parámetros
de objetivo. Si el resultado tiene un porcentaje de error elevado entonces se alteran los
parámetros de la capa posterior hasta lograr minimizar lo máximo el error final, una vez
disminuido el error el análisis se desplaza a la capa anterior a la analizada para calcula
nuevamente los parámetros a modificar para minimizar el coste de error para la capa que
se modificó anteriormente. Esto se realiza de forma iterativa en sentido contrario al de
propagación de la información para así ir corrigiendo cada nodo neuronal mediante el
análisis capa tras capa de la red.
Figura 2-34. Secuencia de entrenamiento de una red con Retro Propagación
Fuente: Elaboración Propia
El proceso para modificar los parámetros (𝑤𝑤𝑖𝑖 y b) y calibrar de la red se suelen
realizar de la misma forma que en la subsección 2.1.1 utilizando derivadas parciales para
identificar el mínimo de la función de coste S en función de los parámetros 𝑤𝑤𝑖𝑖 y b, la
diferencia es que en este caso como se requiere hacer un análisis de cada neurona y ésta
está sujeta a distintas funciones (función de activación, transferencia y salida) se requiere
aplicar la regla de la cadena.
Ejemplificando estos conceptos si se desea modificar por ejemplo una red neuronal
de “L” capas, lo primero sería introducir las variables de entrada para entrenamiento y
comprar la salida real con la salida objetivo, como los parámetros de calibración en el
punto inicial se asignan de forma aleatoria muy probablemente la diferencia entre la salida
objetivo y real será grande, por lo que la función de coste asumirá un nivel de error grande.
68
En la secuencia de operaciones que realiza la neurona se tienen.
ℎ𝑖𝑖 = 𝑥𝑥𝑖𝑖 𝑤𝑤𝑖𝑖 + 𝑏𝑏𝑖𝑖 Función de activación
𝑎𝑎𝑖𝑖 = 𝑓𝑓(𝑥𝑥𝑖𝑖 𝑤𝑤𝑖𝑖 + 𝑏𝑏𝑖𝑖 ) Función de transferencia
𝑦𝑦𝑖𝑖 = F(𝑎𝑎𝑖𝑖 ) Función de salida
𝑆𝑆 = S(𝑤𝑤𝑖𝑖 , 𝑏𝑏𝑖𝑖 ) Función de coste
Como la función de transferencia y la de salida toman valores iguales entonces el
proceso interno de la neurona queda de la forma.
(3.37)
𝑆𝑆(𝑦𝑦𝑖𝑖 (ℎ𝑖𝑖𝐿𝐿 ))
A la función ℎ𝑖𝑖 se le añade el sub índice L asumiendo que el análisis se empieza
desde la última capa de la red según el algoritmo de Backpropagation, la capa L.
Como lo que se quiere saber es cómo varía la función de coste cuando se varían los
parámetros de la red, las derivadas respectivas serán
de la cadena quedarían [Bel Brío, 2004].
𝜕𝜕𝜕𝜕
𝜕𝜕𝑤𝑤 𝐿𝐿
𝜕𝜕𝜕𝜕
𝜕𝜕𝜕𝜕 𝜕𝜕𝑦𝑦 𝐿𝐿 𝜕𝜕ℎ𝐿𝐿
=
∗
∗
𝜕𝜕𝑤𝑤 𝐿𝐿
𝜕𝜕𝑦𝑦 𝐿𝐿 𝜕𝜕ℎ𝐿𝐿 𝜕𝜕𝑤𝑤 𝐿𝐿
𝜕𝜕𝜕𝜕
𝜕𝜕𝜕𝜕 𝜕𝜕𝑦𝑦 𝐿𝐿 𝜕𝜕ℎ𝐿𝐿
=
∗
∗
𝜕𝜕𝑏𝑏𝐿𝐿
𝜕𝜕𝑦𝑦 𝐿𝐿 𝜕𝜕ℎ𝐿𝐿 𝜕𝜕𝑏𝑏𝐿𝐿
y
𝜕𝜕𝜕𝜕
𝜕𝜕𝑏𝑏𝐿𝐿
que utilizando la regla
(3.38)
(3.39)
La primera derivada indica cuando varía la función de coste al variar la función de
salida de la red, si la función de coste es el error cuadrático medio la derivada quedaría de
la forma:
𝑆𝑆(𝑦𝑦 𝐿𝐿 ) =
1
�(𝑦𝑦𝑗𝑗 − 𝑦𝑦𝑖𝑖 𝐿𝐿 )2
2
𝑗𝑗
𝜕𝜕𝜕𝜕
= (𝑦𝑦𝑖𝑖 𝐿𝐿 − 𝑦𝑦𝑗𝑗 )
𝐿𝐿
𝜕𝜕𝑦𝑦𝑖𝑖
69
La segunda derivada en la regla de la cadena indica cómo varía la salida de la neurona
cuando variamos la suma ponderada de la neurona, intermedio a este proceso está la
función de transferencia por lo que se necesita derivar dicha función, ésta depende del
modelo neuronal que se esté utilizando, si por ejemplo para este caso se utiliza la función
sigmoidal como función de transferencia la derivada quedaría.
𝑦𝑦 𝐿𝐿 (ℎ𝐿𝐿 ) =
1
1 + 𝑒𝑒 −ℎ
𝐿𝐿
𝜕𝜕𝑦𝑦 𝐿𝐿
= 𝑦𝑦 𝐿𝐿 (ℎ𝐿𝐿 ) ∗ (1 − 𝑦𝑦 𝐿𝐿 (ℎ𝐿𝐿 ))
𝜕𝜕ℎ𝐿𝐿
La última derivada respectiva para cada regla de la cadena solo indica como varía la
suma ponderada ℎ𝐿𝐿 en función de los parámetros ajustables w y b, la derivada de la suma
ponderada respecto del bias (b) es igual a la unidad ya que el término de bias es
independiente por lo cual la derivada es constante. Con respecto al peso (w), la derivada
es el valor de entrada a dicha neurona que conecta a dicha conexión para la cual el
parámetro hace referencia, recordando que una neurona tiene múltiples entradas y por
consiguiente múltiples parámetros w.
ℎ𝐿𝐿 = �( 𝑦𝑦𝑖𝑖 𝐿𝐿−1 𝑤𝑤𝑖𝑖 𝐿𝐿 + 𝑏𝑏 𝐿𝐿 )
𝑗𝑗
𝜕𝜕ℎ𝐿𝐿
=1
𝜕𝜕𝑏𝑏 𝐿𝐿
𝜕𝜕ℎ𝐿𝐿
= 𝑦𝑦𝑖𝑖 𝐿𝐿−1
𝜕𝜕𝑤𝑤 𝐿𝐿
En la última derivada los valores de entrada a la neurona 𝑦𝑦𝑖𝑖 𝐿𝐿−1 hacen referencia a la
salida de la neurona de la capa anterior, la capa L-1. Finalmente la solución que se busca
para los parámetros de la última capa se calcula computando la ecuación (3.11) y (3.12)
donde cada uno de los términos se multiplican entre sí.
70
Ahora tomando un bloque de la ecuación (3.11), este representa cómo varía el error
en función del valor de ℎ𝐿𝐿 que es la suma ponderada calculada dentro de la neurona
𝜕𝜕𝜕𝜕
𝜕𝜕𝜕𝜕 𝜕𝜕𝑦𝑦 𝐿𝐿 𝜕𝜕ℎ𝐿𝐿
=
∗
∗
𝜕𝜕𝑤𝑤 𝐿𝐿
𝜕𝜕𝑦𝑦 𝐿𝐿 𝜕𝜕ℎ𝐿𝐿 𝜕𝜕𝑤𝑤 𝐿𝐿
𝜕𝜕𝜕𝜕
𝜕𝜕ℎ𝐿𝐿
Si la derivada es muy grande, esto supondrá una alta variación en el error de la salida
general de la neurona, si la derivada es pequeña, indica que la variación de los parámetros
de esta neurona tendrá poco efecto en la variación de la función de coste de la salida
general, esto se aplica para cada neurona de la capa que se esté analizando.
El bloque entonces que se menciona indica el nivel de error imputado a la neurona y
se representa con el siguiente símbolo.
𝜕𝜕𝜕𝜕 𝜕𝜕𝑦𝑦 𝐿𝐿
∗
= 𝛿𝛿 𝐿𝐿
𝜕𝜕𝑦𝑦 𝐿𝐿 𝜕𝜕ℎ𝐿𝐿
(3.40)
Por tanto las ecuaciones (3.11) y (3.12) quedan de la forma.
𝜕𝜕𝜕𝜕
𝜕𝜕ℎ𝐿𝐿
𝐿𝐿
= 𝛿𝛿 ∗
𝜕𝜕𝑤𝑤 𝐿𝐿
𝜕𝜕𝑤𝑤 𝐿𝐿
𝜕𝜕𝜕𝜕
𝜕𝜕ℎ𝐿𝐿
𝐿𝐿
= 𝛿𝛿 ∗
𝜕𝜕𝑏𝑏𝐿𝐿
𝜕𝜕𝑏𝑏𝐿𝐿
Como la derivada del bias respecto de la suma ponderada es 1 y la derivada del
parámetro 𝑤𝑤 𝐿𝐿 respecto a ℎ𝐿𝐿 se conoce.
𝜕𝜕𝜕𝜕
= 𝛿𝛿 𝐿𝐿 ∗ 𝑦𝑦𝑖𝑖 𝐿𝐿−1
𝜕𝜕𝑤𝑤 𝐿𝐿
(3.41)
71
𝜕𝜕𝜕𝜕
= 𝛿𝛿 𝐿𝐿
𝐿𝐿
𝜕𝜕𝑏𝑏
(3.42)
Calculados los parámetros de la capa L, para calcular ahora los parámetros de la capa
anterior L-1 según el algoritmo se repite el mismo razonamiento.
(*)
𝜕𝜕𝜕𝜕
𝜕𝜕𝜕𝜕 𝜕𝜕𝑦𝑦 𝐿𝐿 𝜕𝜕ℎ𝐿𝐿 𝜕𝜕𝑦𝑦 𝐿𝐿−1 𝜕𝜕ℎ𝐿𝐿−1
=
∗
∗
∗
∗
𝜕𝜕𝑤𝑤 𝐿𝐿−1
𝜕𝜕𝑦𝑦 𝐿𝐿 𝜕𝜕ℎ𝐿𝐿 𝜕𝜕𝑦𝑦 𝐿𝐿−1 𝜕𝜕ℎ𝐿𝐿−1 𝜕𝜕𝑤𝑤 𝐿𝐿−1
𝜕𝜕𝜕𝜕
𝜕𝜕𝜕𝜕 𝜕𝜕𝑦𝑦 𝐿𝐿 𝜕𝜕ℎ𝐿𝐿 𝜕𝜕𝑦𝑦 𝐿𝐿−1 𝜕𝜕ℎ𝐿𝐿−1
=
∗
∗
∗
∗
𝜕𝜕𝑤𝑤 𝐿𝐿−1
𝜕𝜕𝑦𝑦 𝐿𝐿 𝜕𝜕ℎ𝐿𝐿 𝜕𝜕𝑦𝑦 𝐿𝐿−1 𝜕𝜕ℎ𝐿𝐿−1 𝜕𝜕𝑏𝑏𝐿𝐿−1
Pero las primeras derivadas respectivas de cada ecuación ya se conocen por el
análisis anterior, las ecuaciones de (*) son las de la función de activación y ya se conocen
las derivadas tanto de los pesos sinápticos y el bias respecto de la suma ponderada o regla
de propagación, por lo que la derivada que queda sería la única que haría falta conocer.
Lo que identifica sería cómo varía la suma ponderada de una capa cuando se varía la
función de salida en la neurona de la capa previa.
Lo que se observa es que ecuaciones van moviendo el error de forma regresiva, hacia
atrás. Luego las primeras 4 derivadas juntas representan lo descrito en el análisis de la
última capa, representar el error de las neuronas en dicha capa L-2, por lo que ahora el
análisis es extensible a la totalidad de capas anteriores hasta llegar a la capa de entrada.
De lo anterior se rescata que se requieren solo de cuatro ecuaciones para poder
calcular los errores de todas las capas y ajustar según las respectivas funciones de coste
los parámetros de cada una de las neuronas dentro de la red.
Cálculo del error de la última capa (L)
𝜕𝜕𝜕𝜕 𝜕𝜕𝑦𝑦 𝐿𝐿
∗
= 𝛿𝛿 𝐿𝐿
𝜕𝜕𝑦𝑦 𝐿𝐿 𝜕𝜕ℎ𝐿𝐿
(3.43)
72
Retro Propagación del error a la capa anterior
𝛿𝛿
𝐿𝐿−1
𝜕𝜕𝑦𝑦 𝐿𝐿−1
= 𝑤𝑤 𝛿𝛿 ∗ 𝐿𝐿−1
𝜕𝜕ℎ
𝐿𝐿 𝐿𝐿
,
𝜕𝜕ℎ𝐿𝐿−1
= 𝛿𝛿 𝐿𝐿−1 ∗ 𝑦𝑦𝐿𝐿−2
𝜕𝜕𝑤𝑤 𝐿𝐿−1
(3.44)
Cálculo de las derivadas de la capa usando el error.
𝜕𝜕ℎ𝐿𝐿−1
= 𝛿𝛿 𝐿𝐿−1
𝐿𝐿−1
𝜕𝜕𝑏𝑏
(3.45)
Con esto se demuestra que el algoritmo de retro-propagación o Backpropagation,
puede realizar de forma mucho más eficiente la calibración de todos los parámetros de la
red neuronal, la única diferencia con el modelo real es que este último trabaja con matrices
de pesos sinápticos w y matrices de conjuntos de entrada x y salida y por lo que el
planteamiento de las ecuaciones resultaría ser mucho más extensa. De todas formas
realizar un cálculo de los parámetros de una red con matrices no sustenta un conocimiento
necesario para entender el funcionamiento de la misma por lo que con lo visto previamente
es suficiente para entender el concepto de aprendizaje.
72
CAPÍTULO 3: EJEMPLOS PRÁCTICOS
73
3.1. RECONOCIMIENTO DE CARACTERES NUMÉRICOS
Una de las funciones de las redes neuronales que tiene una fácil implementación, es
la de reconocer patrones de distribución en una matriz, por ejemplo, caracteres numéricos.
Para hacer una demostración de esta función se procede a entrenar una red neuronal
mediante el software de programación Matlab. El objetivo principal de esta red es
reconocer los números 1, 2 y 4 mediante matrices numéricas presentadas de la siguiente
forma:
Tabla 3-1. Tablas representativas de los números uno, dos y cuatro
0 0 1 0
0 1 1 0
0 0 1 0
=1
0 0 1 0
1 1 1 0
0 0 1 0
=2
0 1 0 0
1 1 1 0
1 0 1 0
1 1 1 0
=3
0 0 1 0
0 0 1 0
Estas formas serán las generales para determinar la clasificación para cada uno de
los tres números, los cuales serán presentados a una red neuronal para que los asimile y
en función de esto sea capaz de reconocer variaciones de los mismos números.
74
3.1.1. Entrenamiento de la red
Con la finalidad de que la clasificación de la red tenga una precisión óptima. Se crean
nuevas matrices con la misma distribución que la anterior pero corridas en 1 pixel, tanto
a la izquierda como a la derecha.
Tabla 3-2. Tablas numéricas con pixel corrido
Original
A la derecha
A la Izquierda
0 0 1 0
0 0 0 1
0 1 0 0
0 1 1 0
0 0 1 1
1 1 0 0
0 0 1 0
0 0 0 1
0 1 0 0
0 0 1 0
0 0 0 1
0 1 0 0
1 1 1 0
0 1 1 1
1 1 1 0
0 0 1 0
0 0 0 1
0 0 1 0
0 1 0 0
0 0 1 0
0 1 0 0
1 1 1 0
0 1 1 1
1 1 1 0
1 0 1 0
0 1 0 1
1 0 1 0
1 1 1 0
0 1 1 1
1 1 1 0
0 0 1 0
0 0 0 1
0 0 1 0
0 0 1 0
0 0 0 1
0 0 1 0
Estas serán las entradas que se enseñarán a la red para que sea capaz clasificar. Como
las salidas objetivo de la red solo pueden tomar valores entre 0 y 1 (digitales), se establecen
3 salidas donde:
𝑦𝑦1 = 1
Si la entrada es 1 la salida será �𝑦𝑦2 = 0
𝑦𝑦3 = 0
𝑦𝑦1 = 0
Si la entrada es 2 la salida será �𝑦𝑦2 = 1
𝑦𝑦3 = 0
75
𝑦𝑦1 = 0
Si la entrada es 4 la salida será �𝑦𝑦2 = 0
𝑦𝑦3 = 1
Nota: En la práctica no es bueno introducir patrones con ruido al entrenamiento de
la red, ya que suele afectar la capacidad de generalización de la misma.
Una vez establecidas tanto las variables de entrada (muestras), como las salidas
objetivo que se presentarán a la red, estas deben ingresarse en Matlab ingresando en la
sección “New Variable”.
Figura 3-1. Barra de Navegación Matlab
Fuente: Matlab
Las matrices de entrada solo se pueden ingresar como filas o columnas dentro de la
sección “New Variable” por lo que se deben rescribir.
76
0
0
1
0
0
1
1
0
0
0
1
0
0
0
1
0
Matriz de “1”
Matriz de “2”
Figura 3-2. Ventana creación de la variable de entradas nueva
Fuente: Matlab
Se cambia el nombre de la matriz general a “Entradas”. Luego se procede a generar
la matriz que definirá las salidas objetivo de la misma forma y en el mismo orden que la
matriz “Entradas”.
Salida = 1
Salida = 2
Figura 3-3. Tabla de valores objetivo en Presentada
Fuente: Matlab
Salida = 4
77
Se ejecuta el comando “nnstart” en la ventana de comandos de Matlab, con esto se
ingresa al toolbox de Matlab para redes neuronales.
Figura 3-4. Ventana al ejecutar el comando "nnstart"
Fuente: Matlab
Se abre al apartado “Pattern Recognition App”, el cual se usará en este ejercicio
para el reconocimiento de caracteres numéricos.
Se seleccionan las matrices de entrada y objetivos, correspondientes a las antes
creadas. En “Samples área” se elige la opción “Matrix Columns”:
78
1
2
3
Figura 3-5. Ventana para la selección de valores de entrenamiento (Entrada/Objetivo)
Fuente: Matlab
Se puede ver un total de entradas de 16x9, donde 16 corresponden al total de pixeles
de cada entrada y 9 los ejemplos numéricos que se ingresan.
Salidas objetivos se tiene una matriz de 3x9, 3 valores para cada una de las 9 salidas
distintas que se obtienen de las entradas.
Se usan 7 ejemplos para entrenamiento, 1 para validación y 1 para test.
79
Figura 3-6. Selección del porcentaje de datos para los pasos del entrenamiento de la red.
Fuente: Matlab
Donde:
Training: El 70% de los datos presentados a la red se usarán como entrenamiento,
esto quiere decir que con estos datos se modificarán los pesos de las entradas sinápticas y
los bias.
Validation: Los samples de validación se utilizan para detener el entrenamiento
cuando la red sea capaz de generalizar de una forma correcta, realizar más épocas de las
necesarias podría inducir a que el nivel de reconocimiento de la red sea efectivo más para
ciertos parámetros que para total de ellos, por lo que es necesario ir haciendo test hasta
que cada validación tenga un valor relativamente bueno.
Testing: Las entradas seleccionadas como “test” no se usan en ningún momento de
la etapa de entrenamiento y solo sirven para medir el nivel de efectividad de la red ya
entrenada.
El número de capas ocultas quedan en 10 que es el por defecto.
80
Figura 3-7. Ventana de selección del número de capas ocultas y arquitectura de la red
Fuente: Matlab
En el esquema neuronal se puede apreciar la estructura de la red que se utilizará para
este propósito, la cual consta de 16 entradas, 10 capas ocultas con sus respectivas
funciones de transferencia de tipo sigmoidal (Analogas) y 3 neuronas de salida con
función de transferencia de tipo dinámica.
La regla de aprendizaje que se utiliza es la de BackPropagation o propagación hacia
atrás, ésta consiste en que a partir del nivel de error que se mida en la salida se irán
ajustando los pesos sinápticos de las neuronas más cercanas a la salida y según el nivel de
calibración de éstas se ajustan las neuronas de forma regresiva, hasta llegar a las de la
primera capa oculta.
Se procede a entrenar a la red:
81
Figura 3-8. Ventana del entrenamiento de la red y las diferentes caracteristicas
Fuente: Matlab
Se hacen un total de 25 Épocas o iteraciones. El programa enseña el tiempo
transcurrido, Performance, correspondiente a el nivel de error de la red, el gradiente y las
Validaciones.
82
Verificando el Performance, el gráfico enseña la mejor validación siendo está en la
época número 25, habiendo en ésta un nivel mucho más bajo de error.
Figura 3-9. Grafico Entropía Cruzada de error vs Épocas
Fuente: Matlab
Se guarda la red dentro del workspace, para realizar test con diferentes números,
donde se consiguió identificar los patrones de números de entrada iguales a los de
entrenamiento con un 100% de eficiencia.
83
Figura 3-10. Ventana de comandos, con resultado del test.
Fuente: Matlab
3.1.2. Test de la red neuronal creada
Para probar de una mejor manera la capacidad de reconocimiento de la red ya creada,
se pueden introducir matrices que representen números similares a los que se utilizaron
para entrenar a la red. Para ello se procede a ingresar matrices numéricas con ruido o
distorsión.
Tabla 3-3. Tablas numéricas de los números uno, dos y cuatro con distorsión
0 1 0 0
1 1 1 0
1 0 1 0
1 1 0 0
1 0 1 0
1 1 1 1
0 1 0 0
0 1 0 0
0 0 1 0
1 1 1 0
1 1 1 1
0 0 1 0
1, 2 y 4 respectivamente, el nombre de las matrices será el mismo pero en
mayúsculas, realizando el test nos queda.
84
Figura 3-11. Ventana de comandos, con resultado del segundo test.
Fuente: Matlab
El resultado se ve positivo, ahora ingresando números más alterados.
Tabla 3-4. Números uno, dos y cuatro con mayor distorsión
0 0
0
1
1 1
1
0
1 0
1
0
0 0
1
1
0 0
1
0
1 0
1
0
0 0
0
1
0 1
0
0
1 1
1
1
0 1
1
1
0 1
1
0
0 0
1
0
85
Se obtienen los siguientes resultados en orden de izquierda a derecha.
Figura 3-12. Ventana de comandos, con resultado del tercer test.
Fuente: Matlab
Se alcanza a percibir que si bien el nivel de exactitud baja un poco respecto de los
números que se desea identificar, hay una cierta aproximación a 1 y 0 en los valores que
corresponden, pero la red ya trabaja de forma óptima.
86
3.2. PREDICCIÓN DEL COMPORTAMIENTO DE UN MOTOR DC
En el siguiente práctico se pretende entrenar una red neuronal que sea capaz de
predecir gráficamente el comportamiento de un motor DC al aplicar un escalón en tensión
eléctrica a la entrada de X [Volts]. Para esto se utilizará el toolbox de Matlab en el apartado
de redes neuronales “Time Series App”.
3.2.1. Tomando datos en la planta de control.
Se toma una serie de datos en una maqueta de control para un motor DC, aplicando
diferentes escalones de tensión a tiempos constantes. Con ayuda de una tarjeta de
adquisición de datos se toman muestras, tanto de la entrada en tensión, como de la
respuesta del motor a su salida con una cantidad de 50 muestras por segundo.
Para entrenar la red de la forma más general posible se recolectan datos de forma
continua tanto en subida de tensión a la entrada como en bajada, gráficamente queda:
Figura 3-13 Esquema planta de control para un Motor DC
Fuente: Elaboración propia
87
Figura 3-14. Grafica respuesta de un Motor DC
Fuente: Matlab
Matlab almacena estos datos en una matriz llamada yout. Para presentar las variables
en la red neuronal se separan los datos de entrada y salida, también se crea el vector de
tiempo.
Figura 3-15. Ventana Comandos para separar Variables
Fuente: Matlab
Para separar los valores de entrada (in) se iguala toda la fila 1 de la matriz de valores
alojada en yout. Se realiza lo mismo para la matriz de valores de out.
Para crear la matriz de tiempo se usa el comando linspace, el primer valor indica el
tiempo inicial, la segunda el tiempo final y la ultima la cantidad de muestras, esta última
debe tener el mismo largo que las variables in y out.
88
Matlab almacena los valores en filas, pero como se quiere entrenar una red de tipo
dinámica se debe trasponer los valores a columnas, así se ingresarán los valores a una red
de una entrada.
Una vez traspuestas ambas variables, se transforman de valores estáticos a dinámicos
mediante los comandos
3.2.2. Entrenando la red neuronal.
Se abre el toolbox de Matlab con el comando “nnstart” y se elige el apartado “Time
Series App”, para crear un perceptrón de entrada y salida dinámica.
Se selecciona la red neuronal de tipo NARX (Nonlinear Autoregressive with
External Input). Esta servirá para predecir la serie de valores de salida (muestras) de la
salida “out”, utilizando todas muestras del estado anterior de y(t) “d” y comparándolas
con nuevos valores de entrada x(t). Donde d es la cantidad de muestras desde la actual
hasta la establecida en el Delay.
89
Figura 3-16. Esquema de la arquitectura básica del funcionamiento de la red
Fuente: Matlab
Como entradas se selecciona la matriz de valores in_cell y como salida out_cell.
Matlab muestra la cantidad de datos que utilizaremos y cuantos se utilizarán como datos
de entrenamiento, validación y test.
Figura 3-17. Selección de los datos de muestreo para diferentes etapas de entrenamiento
Fuente: Matlab
La siguiente ventana nos pide la cantidad capas ocultas que se utilizarán y el “delay”
o el valor de muestra que toma de la salida y lo compara con la entrada, para determinar
ese valor se analiza el gráfico inicial, con el comando
90
Gráficamente aparecen los puntos de muestro de entrada y salida.
Figura 3-18. Grafica por puntos de la entrada/salida de respuesta del Motor DC
Fuente: Matlab
Se aplica zoom en la respuesta del primer escalón
Figura 3-19. Zoom de la gráfica de respuesta inicial al escalón aplicado
Fuente: Matlab
91
Se cuenta la cantidad de muestras en las que al aplicar el escalón se ve un cambio
notorio en la respuesta del motor, este dato se utilizará como delay para entrenamiento de
la red.
Se procede a entrenar la red y se revisan las respuestas del error cuadrático medio.
Figura 3-20. Grafica Error cuadrático medio vs Épocas
Fuente: Matlab
Se realizaron un total de 125 Épocas donde el mejor resultado fue en la última. Con
un MSE de 3,94𝑥𝑥10−5
Figura 3-21. Cuadro con resultados del entrenamiento
Fuente: Matlab
Se puede reentrenar a la red las veces que sea necesario para bajar el porcentaje de
error si es necesario. Se guardan los resultados en el Workspace de Matlab y se aplica
Sample Script
92
Figura 3-22. Ventana de comandos netc
Fuente: Matlab
En esta ventana se pueden leer todos los datos de la red y sus distintas aplicaciones.
Para este caso práctico se requiere una red de tipo closeloop, se oprime en Run.
Una vez terminada la secuencia nos muestra las arquitecturas de las distintas redes
que se crean, incluida la de tipo closeloop para este caso.
Figura 3-23. Arquitectura de la Red Neuronal Terminada
Fuente: Matlab
Se aprecia una red de dos entradas, una salida y un bias, con 10 capas ocultas y un
retardo de 9 datos conectado a la segunda entrada. El performance de la red es de
1.3183𝑥𝑥10−4
93
Aparecerán los nuevos datos en el Workspace, para realizar una prueba de
rendimiento aplicaremos a la red “netc” los mismos valores de entrada que utilizamos para
entrenamiento.
Se transforman los datos de la nueva variable “test” en datos estáticos, para poder
graficarlos con el comando.
Una vez lista la red neuronal tendremos una caja con una entrada en la cual se pueden
ingresar los valores de entrada que se ingresan al motor en tensión, y la salida la cual nos
predecirá los valores de respuesta del motor en función de la entrada en el tiempo.
Entrada
Red Neuronal
Salida
Figura 3-24. Esquema del funcionamiento de la red creada
Fuente: Elaboración propia
Ahora se grafican ambas respuestas, la real que se recolecto de las mediciones del
motor y la respuesta predicha por la red neuronal.
94
Figura 3-25. Graficas comparativas de la respuesta de la red
Fuente: Matlab
Se pueden apreciar ambos gráficos, donde se nota una clara similitud, habiendo un
error en los valores iniciales de la gráfica predicha por la red neuronal.
Si se superponen ambas graficas se puede apreciar mejor las diferencias.
Figura 3-26. Acercamiento de la gráfica real vs respuesta predicha
Fuente: Matlab
95
Ahora se toman nuevos datos del motor, para ver la respuesta de la red ante valores
de entrada/salida no vistos. Se deben aplicar los mismos cambios a los valores de matrices
que se hicieron en la etapa inicial.
Gráficamente los nuevos datos recolectados:
Figura 3-27. Gráfica de los datos recolectados (Entrada y Salida)
Fuente: Matlab
Se aplicaron escalones de subida y bajada con incrementos de 0,5.
Se crea la variable test2 con los datos de entrada de “in2”, correspondientes a los
datos de muestra tomados a la entrada del motor:
Se transforma la variable test en tipo estático, con el comando respectivo y se grafica
la respuesta predicha comparada con la real.
96
Figura 3-28. Gráficas comparativas de la respuesta real vs la predicción de la red
Fuente: Matlab
Graficando ambas respuestas de forma superpuestas:
Figura 3-29. Superposición de la respuesta real del motor y respuesta de la red Neuronal
Fuente: Matlab
97
Se puede apreciar una clara respuesta predicha con éxito, con un margen de error
razonable tomando en cuenta la diferencia de la respuesta con los datos que se le entreno.
Graficando otra predicción de la red neuronal para respuesta del motor con
incrementos no constantes.
Figura 3-30. Respuesta predatoria de la red
Fuente: Matlab
Se puede apreciar un incremento de error en la predicción de la red neuronal, esto se
debe entre otros factores a la irregularidad de los incrementos de tensión aplicada al motor
y los niveles de ruido de la señal real de salida, debido a que la red neuronal esta entrenada
para trabajar con parámetros más estables y se entrenó con una señal de salida más básica,
se generan estas diferencias de lectura, sin embargo el nivel predictivo de la red se
correlaciona con lo esperado
3.2.3. Consideraciones al entrenar una Red
Hay que tener en consideración los datos de entrada con los que se quiere calibrar
una red neuronal para distintos propósitos. Aplicar datos muy irregulares puede afectar la
forma de generalización de la red, y provocar que no sea capaz de predecir de forma
aproximada la totalidad de los valores que se deseen.
98
Un ejemplo de esto se puede realizar utilizando el mismo ejemplo del Motor DC,
Figura 3-31. Ejemplo de la predicción de una red mal entrenada
Fuente: Matlab
Entrenando la red con valores muy dispares, puede provocar que al aplicar una
entrada desconocida, se genere una señal oscilatoria en puntos que difieran mucho de los
valores con los que se le entreno, como se aprecia en la figura.
99
Figura 3-32. Acercamiento de la respuesta oscilatoria erratica de la red
Fuente: Matlab
Señales con mucho ruido.
Otra consideración a la hora de entrenar una red neuronal es que las señales de tipo
objetivo contengan alto ruido, en este caso fue debido a tomar demasiadas muestras en la
toma de datos.
Figura 3-33. Grafica con exceso de muestras y ruido
Fuente: Matlab
100
CONCLUSIONES Y RECOMENDACIONES
En conclusión se puede rescatar que el uso de redes neuronales se extiende a una
gran variedad de aplicaciones, el uso de este método algorítmico emplea modelos
matemáticos estadísticos para lograr predecir ya sea variables lineales como no lineales,
para el segundo de estos casos es muy necesario el saber que valores de entrenamiento
ingreso a la red de modo que ésta quede calibrada de una forma óptima, la mala calibración
de una red neuronal conlleva a que su aplicación no sea satisfactoria para la mayoría de
casos o variaciones del modelo con el cual se entrenó. Existen algunos métodos de
aprendizaje más avanzados como el Deep Learning (Aprendizaje profundo) que enseñan
de mejor forma como entrenar una red neuronal, pero conllevan un nivel de aprendizaje
más intenso por lo que no se recomiendan como punto de partida.
Una de las ventajas de esta tecnología es que se puede complementar a procesos ya
existentes para optimizar de mejor manera los mismos, realizando diagnósticos de forma
autónoma y/o modelando las características de un proceso para adelantarse a futuras
acciones.
El toolbox de Matlab en el apartado de nnstart ofrece distintas opciones que serán
más o menos eficientes dependiendo del tipo de tarea que se quiera llevar a cabo, para
redes neuronales clasificadores es más efectivo utilizar el apartado de Pattern Recognition
App que por ejemplo una red de tipo NARX que es más eficiente para hacer un análisis
predictivo del comportamiento de un sistema dinámico, como el visto en capítulos
anteriores, por lo que es necesario tener estudiados estos conceptos previamente antes de
realizar cualquier simulación. Esto se puede llevar a cabo fácilmente con la ayuda de
Matlab
101
BIBLIOGRAFÍA Y FUENTES DE LA INFORMACIÓN
DEL BRIO, Bonifacio Martin y SANZ MOLINA, Alfredo. “Redes Neuronales y Sistemas
Difusos”. México: Universidad de Zaragoza, 2002. ISBN 970-15-0733-9
HAGAN, Martin T. DEMUTH, Howard B. BEALE Mark H. DE JESÚS Orlando.
“Neuronal Netword Design”. EE.UU. Oklahoma State University. ISBN 097-17-3211-6
MONTGOMERY, Douglas C. “Introducción al Análisis de regressión Lineal”. Arizona
State University, Tercera Edición Mexico, 2006. ISBN 970-24-0327-8
MATICH, Damián Jorge. “Redes Neuronales: Conceptos Básicos y Aplicaciones”.
Argentina: Universidad Tecnológica Nacional. 55p
BASOGAIN Olabe Xabier, “Redes Neuronales Artificiales y sus Aplicaciones”. Euskadi:
Escuela Superior de Ingeniería de Bilbao, UPV-EHU. 2008. P3BN11
IZAURIETA Fernando, SAAVEDRA Carlos. "Redes Neuronales Artificiales," Academic
Emergency Medicine, vol. 21, (1), pp. 17, 2014.
A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence. (1°
1955, Dartmouth College, Nuevo Hampshire Estados Unidos) Eds Dartmouth College
1996 17p [Consulta: 9 abril de 2019]
DR. DOVALE Andrés, MSc. IGLESIAS Belén, Tejido Nervioso [en línea]
<http://www.sld.cu/> 2005 [Consulta: 11 abril de 2019]
DUWAN Ernesto: Redes Neuronales [Diapositiva en línea] Ciencia de la información –
Bibliotecología Bogotá D.C. 2014, col <https://darismendy.files.wordpress.com/>
102
BUENO Leandro, PONS José Luis. Un sistema de interfaz cerebro ordenador basado en
redes neuronales auto-organizadas [en línea] 2016 <https://www.researchgate.net/>
[Consulta: 12 abril 2019]
SHANNON Claude E, Programming a Computer for Playing Chess [en línea]
Philosophical Magazine, Ser.7, Vol. 41, No. 314, March 1950, Bell Telephone
Laboratories <https://vision.unipv.it/> [consulta 10 junio de 2019]
HOPFIELD John J., Neural networks and physical systems with emergent collective
computational abilities [en línea] Division of Chemistry and Biology, California Institute
of Technology, Pasadena, January 15, 1982 <https://www.pnas.org/ > [consulta 10 junio
de 2019]
Descargar