PROTOTIPO DE UNA RED NEURONAL ARTIFICIAL CON ARQUITECTURA DINÁMICA BASADA EN EL PROCESO DE NEUROGÉNESIS DE REDES NEURONALES MADURAS

Este fue mi proyecto de pre-grado en 2009 para quienes quieran seguir aportando ideas en el campo de las redes neuronales artificiales.


CONTENIDO

1.    INTRODUCCIÓN    11

2.    ANTECEDENTES    14

2.1.    Biología de las Redes Neuronales    14

2.1.1.    La neurona y su comunicación    14

2.1.2.    El sistema Nervioso    20

2.1.3.    Procesos estructurales de adaptación y auto-regeneración    22

2.1.4.    Propiedades emergentes de las redes neuronales    24

2.1.5.    Consciencia e Interiorización    32

2.1.6.    Propiedades de las redes neuronales como sistema vivo    35

2.1.7.    Propiedades de las redes neuronales como sistema evolutivo    38

2.1.8.    Propiedades de las redes neuronales como organización    40

2.2.    Redes Neuronales Artificiales (RNA)    45

2.2.1.    Aprendizaje    47

2.2.2.    Arquitecturas    49

2.2.3.    Limitaciones    50

2.2.4.    Fases para la implementación    50

2.2.5.    Perceptrón Multicapa (MLP) y Backpropagation    56

2.2.6.    Redes generativas de aprendizaje supervisado    64

3.    POSIBILIDADES ARTIFICIALES derivadas de LA BIOLOGÍA    67

3.1.    Plausibilidad biológica de los modelos convencionales    67

3.2.    La representación de la información    71

3.3.    Modelos Artificiales    75

4.    DESCRIPCION DEL PROBLEMA DE INVESTIGACIÓN    82

5.    MAPA MENTAL DE LA ESTRUCTURA DEL PROYECTO    85

6.    ANÁLISIS    86

6.1.    Metodología de Desarrollo    86

6.2.    Definición del proyecto    91

6.3.    Ingeniería de Requerimientos    92

6.3.1.    Evaluación de necesidades y requerimientos computacionales    94

6.3.2.    Revisión de Software existente para modelamiento del sistema    95

6.3.3.    Herramientas de desarrollo    98

7.    DISEÑO    100

7.1.1.    Identificación de propiedades de la red    100

7.1.2.    Identificación de propiedades de componentes    102

7.1.3.    Modelos de procesamiento    104

7.1.4.    Especificación de neurogénesis    107

8.    PROTOTIPADO    112

8.1.    Iteración 1 – Creación de una red    113

8.2.    Iteración 2 – Esqueleto ambulante de RNA    115

8.3.    Iteración 3 – Prototipo 1 con aprendizaje Perceptrón    120

8.4.    Iteración 4 – Prototipo 2 con aprendizaje Backpropagation    124

8.5.    Iteración 5 – Prototipo 3 con neurogénesis    127

8.6.    Iteración 6 – Desarrollo de notificación de eventos    137

8.7.    Iteración 7 – Desarrollo de Interfaz Gráfica de Usuario    140

8.8.    Modelo en capas por prototipos    142

9.    RESULTADOS DE LA INVESTIGACIÓN    144

9.1.    Criterios de decisión para entrenamiento backpropagation    144

9.1.1.    Funciones de transferencia    145

9.1.2.    Diferencial de función de transferencia    145

9.1.3.    Topología    146

9.1.4.    Presentación de los patrones de entrenamiento    147

9.2.    Acercamientos potenciales al modelo biológico    148

9.3.    Estructuras de Datos e Ingeniería de Software aplicados    149

9.4.    Rendimiento de la aplicación    150

9.4.1.    Tiempo de procesamiento    151

9.4.2.    Velocidad de convergencia de la red    152

9.5.    Aplicación de neurogénesis en el modelo    154

9.5.1.    Pruebas    154

9.5.2.    Ventajas    155

9.5.3.    Desventajas    156

10.    PROPUESTAS PARA OPTIMIZACIÓN Y EXTENSIÓN DEL MODELO    158

10.1.    Heurísticas de aceleración del proceso de aprendizaje    158

10.2.    Técnicas para reducción de tamaño de una red    159

10.3.    Extensibilidad    160

11.    TRABAJO FUTURO    162

CONCLUSIONES    164

BIBLIOGRAFÍA    167

ANEXOS    172

Anexo 1: Uso del CORE de la aplicación    172

Anexo 2: Uso de la GUI de la aplicación    175

Anexo 3: Pruebas de rendimiento    180

ÍNDICE DE ILUSTRACIONES

Ilustración 1 Partes de una neurona    15

Ilustración 2 Tipos de sinapsis    16

Ilustración 3 Diferentes mensajes químicos    17

Ilustración 4 Sinapsis tripartita    18

Ilustración 5 Movimientos antagónicos de músculos por inhibición (Tapia, 2001)    21

Ilustración 6 Respuestas antagónicas por inhibición (Tapia, 2001)    21

Ilustración 7 Potenciación asociativa y homo sináptica    26

Ilustración 8 Mecanismo de potenciación a largo plazo    27

Ilustración 9 Aprendizaje en secuencia temporal    30

Ilustración 10 Reflejo condicionado    30

Ilustración 11 Conceptos clave en la autonomía de lo vivo (Varela, 2002)    38

Ilustración 12 Sistema límbico (punteado), en el cerebro    40

Ilustración 13 Reconstrucción del daño en el tejido nervioso    42

Ilustración 14 Clasificación básica de redes neuronales artificiales    45

Ilustración 15 Representación artificial de una neurona y su información    46

Ilustración 16 Fases de implementación de una RNA    51

Ilustración 17 Fases de las redes de correlación-cascada    65

Ilustración 18 Limitaciones de la propuesta de célula abuela (Anderson, 2007)    73

Ilustración 19 Neurogénesis en RNA asociativas    77

Ilustración 20 principio de asociación metafórica    78

Ilustración 21 Diferenciación mediante psicología de la Gestalt    79

Ilustración 22 Mapa mental general del modelo    85

Ilustración 23 Estrategias propuestas en Crystal Clear (Morales, 2007)    88

Ilustración 24 Ciclo de vida de un proyecto de Crystal Clear (Cockburn, 2002)    90

Ilustración 25 Aplicación del modelo en las fases de implementación de RNA    91

Ilustración 26 Roles de entrenador y diseñador en el proceso    93

Ilustración 27 Diagramas de casos de uso de trazo grueso    94

Ilustración 28 Sistema neuronal    102

Ilustración 29 Sistema sináptico    103

Ilustración 30 Sistema célula glíal    104

Ilustración 31 Representación matricial de RNA    105

Ilustración 32 Propuesta matricial para el modelo    105

Ilustración 33 Representación en objetos de la comunicación neuronal    106

Ilustración 34 Solución aproximada de neurona A para XOR    110

Ilustración 35 Solución aproximada de neurona B para XOR    110

Ilustración 36 Red final para neurogénesis de XOR    111

Ilustración 37 Descripción de la estructura iterativa manejada en el documento    112

Ilustración 38 Diagrama de clases para creación de red    114

Ilustración 39 Diagrama de comunicación neuronal    116

Ilustración 40 Secuencia de activación    117

Ilustración 41 Diagrama de clases Esqueleto Ambulante    117

Ilustración 42 Diagrama de clases Prototipo 1    121

Ilustración 43 Formato para archivos con datos de entrenamiento    123

Ilustración 44 Diagrama de clases Prototipo 2    125

Ilustración 45 Diagrama de clases prototipo 3    128

Ilustración 46 Red sin neuronas ocultas que intenta solucionar XOR    134

Ilustración 47 Respuesta de red sin neuronas ocultas a XOR    135

Ilustración 48 Respuesta y modificación con neurogénesis    135

Ilustración 49 Parámetro adicional para controlar neurogénesis    136

Ilustración 50 Modelo de escuchas y eventos de la aplicación    139

Ilustración 51 Visualización de la GUI    141

Ilustración 52 Esquema de capas de entregas y prototipos    142

Ilustración 53 Diagrama de paquetes con arquitectura MVC    143

Ilustración 54 Modelo para extensibilidad neuronal.    161

ÍNDICE DE CONTRACCIONES

ADN

Ácido Desoxirribonucleico

ARN

Ácido Ribonucleico

BP

Backpropagation

DOO

Diseño Orientado a Objetos

FCN

Factor de Crecimiento Nervioso

GUI

Interfaz Gráfica de Usuario – Graphical User Interface

JOONE

Java Object Oriented Neural Engine

MLP

Perceptrón multicapa – Multi Layer Perceptron

POO

Programación Orientada a Objetos

RNA

Red Neuronal Artificial

UML

Lenguaje de modelado unificado – Unified Modeling Language

  1. INTRODUCCIÓN

Desde que Alan Turing motivó de forma concluyente a los matemáticos, físicos e ingenieros a comprender el funcionamiento de la mente, mostrando la posibilidad teórica de desarrollar una máquina pensante que realizara procesos análogos a los del cerebro; distintas disciplinas han empezado a emerger y a fusionarse para intentar develar la verdad detrás de los procesos mentales.

En el contexto de la computación y los algoritmos, uno de los mayores avances inició con el primer modelo artificial de la neurona desarrollado por Mc-Culloch-Pitts en el cual establecieron la base de lo que hoy se denomina Redes Neuronales Artificiales o RNA; este modelo artificial sólo pudo ser posible gracias a que unas décadas atrás, Ramón y Cajal logró identificar las neuronas en el sistema nervioso con ayuda de técnicas desarrolladas por la química y estableció detalles de las conexiones sinápticas mediante un estudio neurológico.

Esta es una simple muestra de cómo los diferentes campos de la ciencia han contribuido de forma correlacionada para ahondar en el conocimiento que hoy se tiene del funcionamiento del cerebro, de tal forma que hoy se conoce como neurociencias al conjunto de disciplinas que contribuyen con el estudio de los procesos neuronales. Dentro de estas disciplinas se encuentran la Inteligencia Artificial (IA) y la vida artificial que en los últimos años han dado aportes significativos para validar en muchos casos si una teoría concreta es posible.

La investigación en las RNA no es ajena a este proceso y mantener la multidisciplinaridad va en pro del desarrollo científico y computacional. Se han desarrollado así, modelos artificiales concretos para buscar soportar, por ejemplo: el conductismo de Pavlov, el constructivismo de Piaget o incluso modelos que integran el estudio de la vida como modelos de competencia neuronal. Sin embargo, los avances más notables de las RNA han permanecido restringidos al dominio de los matemáticos que desarrollan algoritmos que procuran describir un fenómeno particular.

En este proyecto de tesis se establecerá en primer lugar, el tipo de contribución que puede realizar un investigador desde el campo de la computación y del pensamiento sistémico, siendo el mayor dominio de un ingeniero de sistemas. Debido al reduccionismo generalmente presente en la investigación neurológica (lo cual da muy buenos resultados) y el enfoque algorítmico de los matemáticos que buscan mejorar los modelos con optimizaciones basadas en la matemática y no en la biología (que también da buenos resultados); el pensamiento sistémico se convierte en una herramienta poderosa que permite estudiar los procesos neuronales con un enfoque integrador, por lo cual se realizará una revisión de las contribuciones más importantes de las diferentes ramas de las neurociencias para crear un modelo basado en un estudio sistémico.

Así como Hopfield desarrolló un modelo de red neuronal basado en las Leyes de Kirchhoff y soportado en los circuitos, en este proyecto se empieza la búsqueda a un modelo sistémico basado en la teoría de sistemas y en las posibilidades computacionales actuales de la representación y procesamiento de la información, implementando nociones de reglas locales de comportamiento y estrategias evolutivas.

Sin embargo, las RNA también son herramientas de desarrollo y resolución de problemas que se aplican en entornos reales y por ello deben cumplir ciertos criterios de viabilidad técnica. Por lo cual es importante tener en cuenta las limitaciones con las que cuentan los modelos implementados actualmente y proponer una solución seria y tangible a una de ellas.

En el campo de las RNA uno de los problemas más conocidos es la inadaptabilidad de la red, si bien la modificación de los pesos sinápticos es una forma de adaptación que conlleva un proceso de aprendizaje; la adaptabilidad estructural es una limitación con la que han lidiado los diseñadores de RNA funcionales pues de la estructura de la red depende que sea funcional o no.

Es así como se presenta una solución basada en el modelo sistémico e implementada algorítmicamente, para dar solución al problema de encontrar una topología adecuada, de tal forma que la red logre dar solución al problema que se enfrente por medio de la creación de nuevas neuronas y conexiones.

Ahora los paradigmas de programación también pueden contribuir al estudio neuronal. Generalmente los investigadores desarrollan modelos matriciales debido a que la programación tradicional no permite formas más abstractas o modelos más complejos de comunicación; la programación orientada a objetos es un paradigma compatible con los modelos sistémicos y permite establecer propiedades y procesos de forma parecida a como se establecerían en un estudio formal.

A lo largo del documento se presentarán todos los componentes que contribuyen al estudio neuronal y a sus medios de implementación y simulación, integrándose para formar un nuevo modelo basado en paradigmas, métodos y procesos adoptados por los ingenieros de sistemas en el estudio, modelamiento y desarrollo de un sistema.

  1. ANTECEDENTES

Las investigaciones que sirven de base para un modelo artificial van desde la biología, química, neurología y psicología hasta el estudio de la evolución del sistema nervioso según la conducta en ambientes naturales o neuroetología; sin contar con los aportes de la Inteligencia Artificial (IA) son diferentes estudios en ramas multidisciplinares que dan pistas sobre los comportamientos locales que desembocan en el emergente sistema nervioso y en una especialización mayor como el cerebro. Por esta razón se hará una revisión de los más importantes resultados investigativos que describen: tanto detalles que competen a áreas específicas de la IA basadas en el comportamiento neuronal; como a la IA en sí, estableciendo criterios generales clave como las propiedades de la vida o la evolución.

    1. Biología de las Redes Neuronales

Es mucho lo que se puede decir sobre el sistema nervioso de un organismo ya que en él se encuentran los centros de regulación y activación de las emociones, las formas de consciencia, la comunicación, los centros de proceso sensorial, generadores de patrones inconscientes, sistemas acoplados a él como el inmunológico y un sin número de estrategias relacionadas con el desarrollo del organismo, de las cuales sólo se tomarán las descripciones que estén más cercanas a lo que se pueda extrapolar a las RNA, a detalles de comportamientos locales que den idea de posibles comportamientos asimilables a neuronas artificiales, o a posibles sistemas artificiales emergentes a partir de entidades de comunicación: como células.

  1. La neurona y su comunicación

El componente esencial y más estudiado del sistema nervioso son las neuronas, células que evolucionaron en pro de sistemas de comunicación, que son posibles debido a 2 notables propiedades de las neuronas (Cajal, 1991): la irritabilidad, que le confiere a la célula la capacidad de respuesta a agentes físicos y químicos con la iniciación de un impulso y la conductibilidad, la cual le proporciona la capacidad de transmitir los impulsos de un sitio a otro.

Las neuronas son sensibles mecánicamente, formando la base para un número de células receptoras, es decir: “la estimulación mecánica directa de una neurona en cualquier lugar de su superficie, la activa” (Anderson, 2007) y el sistema nervioso debe controlar esta característica, estableciendo otras propiedades al cerebro como el fluido cerebroespinal. Esta sensibilidad mecánica apoya la teoría del sistema simple receptor-efector como principio del sistema nervioso.

Una neurona generalmente está compuesta por tres elementos básicos, el cuerpo o soma, el axón y las dendritas. El núcleo contiene la información que necesita la neurona para cumplir sus procesos básicos; las dendritas son prolongaciones cortas cuya función es recibir los impulsos de otras neuronas y enviarlos al soma de la neurona; el axón es una prolongación única cuya función es enviar el impulso desde el soma neuronal a los terminales axónicos donde estos transmitirán un mensaje a otra neurona por medio de una unión que se denomina sinapsis.


Ilustración 1 Partes de una neurona

Hay varios tipos de neuronas según su forma y función: como las sensitivas que reciben estímulos del medio, interneuronas que procesan las entradas y efectoras o motoras, que estimulan directamente el musculo o efector.

Las neuronas interactúan entre sí por medio de señales eléctricas, químicas (Tapia, 2001), y para otros científicos también interactúan por medio de campos magnéticos, células glíales y por acoples electrotónicos. Estos mecanismos se discutirán más adelante.

Comunicación Neuronal Clásica

Las neuronas se comunican mediante las sinapsis, en las sinapsis las neuronas no se unen físicamente, existe un espacio entre ellas denominado espacio sináptico (Cajal, 1998)
que está entre los 2 y 40 nanómetros (nm), en la comunicación eléctrica una neurona transfiere la electricidad a otra, si el espacio sináptico no es muy grande; en la comunicación química, la electricidad no alcanza a pasar un espacio sináptico mayor, por lo que la neurona presináptica expulsa moléculas (neurotransmisores) que al interactuar en el espacio con los receptores de la membrana de la neurona postsináptica, desencadena una serie de procesos que modifican la permeabilidad de la membrana, de tal forma que si alcanza un cierto nivel de excitación la neurona puede dispararse y afectar a las neuronas postsinápticas.


Ilustración 2 Tipos de sinapsis

Los neurotransmisores tienen formas en el espacio que les permiten ser identificados si encajan como un puzle en los receptores de la neurona postsináptica, “esto implica que la membrana de las neuronas es un verdadero mosaico de receptores, pues frente a cada membrana de cada una de los cientos o miles de terminales axónicas que lleguen a ella habrá un receptor, que además, por los mecanismos de especificidad en el reconocimiento entre moléculas será sólo para la molécula neurotransmisora que se libere desde la terminal que le corresponde y para ninguna otra” (Tapia, 2001). Esto permite que distintas configuraciones de neurotransmisores envíen mensajes específicos a la neurona, como por ejemplo la inhibición, la cual se mencionará más adelante debido a su importancia.


Ilustración 3 Diferentes mensajes químicos

Se han identificado más de 50 neurotransmisores hasta hoy, sin embargo todavía no se conoce bien las condiciones para que un neurotransmisor sea liberado y no otro. Se sabe que el calcio que viaja por el axón se concentra en las terminales axónicas ocasionando la liberación del neurotransmisor y puede que la cantidad de calcio y de otras sustancias químicas defina el tipo de neurotransmisor y la cantidad que se libera.

Otro hecho importante es que la comunicación en la sinapsis química solo puede ser unidireccional ya que se definen moléculas estrictamente mensajeras (neurotransmisores) y moléculas estrictamente receptoras; mientras las sinapsis eléctricas son bidireccionales otorgando ciertas ventajas y desventajas.

Comunicación por Sinapsis Tripartita

La neurona al encontrarse rodeada y estructurada por otras células, es afectada generalmente en su comunicación con otras neuronas, en algunos casos algunas células gliales llamadas astrocitos, intervienen en diferentes sinapsis para controlar el disparo de múltiples células, esta es la llamada sinapsis tripartita, concepto compartido por algunos investigadores. En la sinapsis tripartita la sinapsis está constituida funcionalmente por tres elementos: los elementos presinápticos, los postsinápticos y los astrocitos adyacentes que pueden interconectar sinapsis que trabajan con la misma frecuencia. Estos astrocitos pueden contener la diseminación de neurotransmisores por lo cual pueden retardar el disparo de una neurona, de esta forma es como puede llegar a sincronizar de diferentes sinapsis, conteniendo diferentes impulsos excitatorios en las sinapsis para liberarlos todos en un momento dado (Volterra, Magistretti, & Haydon, 2002).

El esquema siguiente muestra un astrocito que envuelve a la sinapsis con una de sus extremidades y que puede generar ondas de calcio dependiendo de las sinapsis de otras neuronas, ya que el calcio es también el ion fundamental para la liberación de neurotransmisores las sinapsis de diferentes neuronas se pueden sincronizar en cada onda de calcio generada por el astrocito. De esta forma, las sinapsis regulan el disparo de otras sinapsis a través del astrocito.


Ilustración 4 Sinapsis tripartita

La célula glíal interviene en el proceso de la memoria no sólo porque detecta e integra la señal sináptica, sino que además, se encontró que en el hipotálamo de ratas lactantes puede reaccionar liberando sustancias activas llamadas gliotransmisores, que estimulan directamente a la neurona postsináptica, regulando la memoria sináptica.

Para que este descubrimiento tenga un alcance profundo sobre la neurología actual, será necesario que se compruebe que este proceso se aplica también a todas las regiones del cerebro y a todos los centros clásicos de la memoria, como son el hipocampo, el cerebelo o el córtex.

En la fase de desarrollo de software se ilustrará la forma en que sería posible implementar un modelo de sinapsis tripartita para de esta forma realizar investigación de posibles resultados desde la computación.

Acoples Electrotónicos

Para Rodolfo Llinás las neuronas se acoplan electrotónicamente, esto se da porque “muchas clases de neuronas del sistema nervioso están dotadas de actividad eléctrica intrínseca, esta actividad es una variación de voltaje (desorden de milésimas de voltio con frecuencia de menos de una a más de 40m oscilaciones por segundo), sobre el cual es posible evocar efectos eléctricos más amplios (potenciales de acción), sobre todo en las crestas de oscilación. Por la naturaleza oscilatoria se puede explicar los altibajos de la sensibilidad de la célula a señales sinápticas” (Llinás, 2003)

Ahora, las neuronas cuyo comportamiento es rítmico y oscilatorio pueden impulsar la actividad de otras neuronas mediante potenciales de acción conformando grupos neuronales que oscilan en fase, esta es tal vez la forma más primitiva de sincronización que resulta de la conectividad directa entre neuronas. La resonancia no es continua, se puede cesar su oscilación “cuando diversos grupos de neuronas, con patrones oscilatorios de respuesta, perciben o codifican diferentes aspectos de una misma señal de entrada, podrán unir sus esfuerzos para resonar en fase uno con otro” (Llinás, 2003).

  1. El sistema Nervioso

El medio de una neurona es el sistema nervioso, aunque está comprobado (Pert, 1985) que los péptidos del organismo son los puentes de comunicación entre el sistema nervioso e inmunológico formando una macro red, denominada red psicosomática. Por tanto es importante conocer algunas de sus características, adicionalmente los conjuntos de neuronas forman sinergias neuronales los cuales son necesarios examinar para un mejor entendimiento de un sistema neuronal.

Medio Neuronal

El medio neuronal está compuesto por varias células, entre ellas las células glíales. La importancia de estas células se produjo en 2002 cuando la revista Science publicó un artículo (Science, 2002) en el que se señalaba que las células glíales contribuyen a los procesos cerebrales de información, detectando los impulsos neuronales y comunicándose con estas células para regular la actividad cerebral. Según se determinó en ese momento, las células glíales pueden detectar también las señales eléctricas procedentes de otras partes del cerebro, además de las sinapsis.

Las células glíales o neuroglia (neuro = nervio; glía = pegamento) han adquirido gran importancia en los últimos años sobre todo en investigaciones sobre la conciencia. Las células glíales en comparación con las neuronas son más pequeñas, se pueden reproducir y son unas 5 a 10 veces más numerosas, no se comunican con otras células ni entre ellas mismas (no son excitables) y cumplen funciones metabólicas, de sostén y defensa de las redes neuronales. Es posible que estas células se hayan especializado en controlar el desarrollo neuronal.

Sinergias neuronales

En una sinergia neuronal se evidencian mecanismos de control, principalmente por la inhibición. Por ejemplo, la regulación de músculos antagonistas como lo describe Tapia (Tapia, 2001):



Ilustración 5 Movimientos antagónicos de músculos por inhibición (Tapia, 2001)

O comportamientos más complejos como huir o luchar:


Ilustración 6 Respuestas antagónicas por inhibición (Tapia, 2001)

Otro esquema del funcionamiento de una sinergia neuronal lo muestra Llinás con el sistema motor como sigue: La unidad motora es llamada motoneurona en la espina dorsal y a ella están asociados cientos de fibras de músculos pero cada fibra muscular solo acepta órdenes de una sola motoneurona. Como el control motor es en tiempo real, aligerar la carga requeriría de varios niveles de complejidad: el cerebro (el primer nivel de complejidad), pre motor de control que prediga un conjunto posible de decisiones correctas (sinergias musculares) y active a los sistemas de control motor (el segundo), quienes podrán cambiar entre esas pocas combinaciones escogidas previamente de todas las combinaciones de músculos, esta previa selección alivia la carga sobre el control motor, que controle los músculos (el ultimo). El primer control el predictivo es sin retroalimentaciones pre alimentado, luego el segundo es el que usa la retroalimentación, afinando por medio de claves táctiles, cinestésicas, vestibulares o visuales.

Las neuronas motoras disparan intrínsecamente, los músculos se contraen rítmicamente y los receptores musculares y de las articulaciones responden al movimiento e informan a las neuronas motoras que el organismo se movió. Es decir la activación de motoneuronas genera un eco sensorial que les informa qué respuesta corporal generó su activación.

No hay que olvidar que el enfoque de Llinás se presenta bajo el marco de las actividades eléctricas del sistema nervioso, es decir: “La operación organizacional del aparato motor como un todo se relaciona con la naturaleza oscilatoria neuronal”.

  1. Procesos estructurales de adaptación y auto-regeneración

Algunos de los procesos estructurales que se identifican en el sistema nervioso, son los que llevan a cabo las células gliales, los de muerte neuronal, neurogénesis explicada en el apartado de “memoria y aprendizaje” y sinaptogénesis, aunque para los últimos proceso no se identifiquen que células o moléculas participen en ellos, si se puede identificar su importancia y otras propiedades relacionadas.

Células metabólicas

Las células identificadas en el metabolismo del sistema nervioso son las células gliales explicadas en el apartado de “medio neuronal”. Existen 4 tipos de células glíales: astrocitos, micro glías, oligodendroglias y epéndimos. Los astrocitos son las neuroglias más abundantes y son aislantes eléctricos, por lo cual pueden limitar la diseminación de neurotransmisores, en términos generales, se ha aceptado por la comunidad científica que los astrocitos tienen las siguientes funciones: 1) limpian “desechos” del cerebro; 2) transportan nutrientes hacia las neuronas; 3) sostienen en su lugar a las neuronas; 4) digieren partes de las neuronas muertas; 5) regulan el contenido del espacio extracelular. Los oligodendrocitos se enrollan alrededor de los axones de las neuronas formándoles una cubierta de varias capas de mielina que es un aislante del impulso nervioso debido a su alto contenido en grasa permitiendo una gran velocidad en la transmisión de los impulsos nerviosos, principalmente en los axones.

Sinaptogénesis

La sinaptogénesis hace referencia a la creación de nuevas conexiones entre las neuronas y posibilita la adaptación de la red a entornos desconocidos, propiedad denominada plasticidad neuronal. Existen dos hipótesis sobre la forma en que las neuronas se conectan, la hipótesis de reconocimiento molecular se enfoca en la recuperación de sinapsis dañadas donde cada neurona tiene una identidad molecular que le permite ser reconocida por las que tenían sinapsis con ella (Yuste, 1994). La hipótesis de la actividad neuronal propone que su activación refuerza y posibilita el surgimiento de nuevas conexiones sinápticas mientras desaparecen las que no se usan (Hongjun Song, 2005).

Muerte Neuronal

Las neuronas pueden morir por diferentes causas, sin embargo es de especial interés la muerte neuronal que no es causada por factores externos o accidentales a la red (necrosis), sino inherentes a su desarrollo. En su medio natural y en condiciones normales las neuronas necesitan de ciertas sustancias denominadas factores de crecimiento nervioso (FCN) para sobrevivir, estos factores son escasos en el medio neuronal, así que las neuronas deben competir por ellos de tal manera que si no pueden conseguirlos, mueren; este fenómeno se denomina muerte celular natural (G. Siegel, 1999).

La muerte por apoptosis ó muerte celular programada se caracteriza por un desequilibrio en el medio de la neurona donde sustancias químicas degeneran su integridad y si ésta no se protege adecuadamente entra en un estado denominado senescencia donde su muerte está auto programada (R. E. Ellis, 1991).

Tanto la muerte celular natural como la apoptosis plantean dos cuestiones importantes: la neurona está sobreviviendo en el medio y para ello debe competir con otras neuronas para lograrlo

  1. Propiedades emergentes de las redes neuronales

Para tener idea de cómo un sistema artificial pudiera ser adaptativo y más acorde a lo biológico, hay que acercarse a las pistas neuroquímicas, o eléctricas que desembocan en propiedades más complejas.

Memoria y Aprendizaje

Asociado al aprendizaje se han encontrado dos fenómenos, uno la modificación de la eficacia sináptica y otro la neurogénesis, a continuación se explican ambos fenómenos:

Plasticidad Sináptica

La plasticidad sináptica se presenta en distintas formas: por un lado está la potenciación asociativa donde la actividad repetitiva en una terminal dendrítica (entrada) de una neurona puede afectar la sensibilidad receptora de otra terminal en la misma neurona si existe generación de potencial de salida en dicha neurona. Esta asociación es la misma que describe el condicionamiento clásico de Pavlov en los perros y en la Aplysia Californica.

Por otro lado la potenciación homo sináptica, descrita por primera vez en los 70 por Bliss y Lomo (Bliss TV, 2004) en el lóbulo temporal (hipocampo y giro dentado), es la modificación del potencial de acción de la neurona estimulada, lo que puede suceder por la neurona presináptica o la postsináptica de la siguiente manera: cuando un axón pre sináptico se estimula repetidas veces la respuesta post sináptica puede aumentar con cada estimulación, a este fenómeno se le llama facilitación, el efecto puede durar hasta varios segundos, lo que ocurre es que la neurona pre sináptica libera cada vez más neurotransmisor residual. Cuando la neurona pre sináptica se estimula durante mucho tiempo se presenta en cada estimulación una disminución de la respuesta post sináptica, a esto se le llama fatiga sináptica y también es una modificación en la célula presináptica, la cual libera cada vez menos neurotransmisores. Estos casos no implican modificaciones postsinápticas y están demostrados especialmente en el sistema periférico, como cuando se estimula la piel o los músculos.

En algunas neuronas cerebrales cuando se presentan estímulos de alta frecuencia, se aumenta la eficacia de la transmisión por días e incluso semanas, proceso denominado potenciación
a largo plazo. El mecanismo de potenciación a largo plazo tiene componentes anatómicos pues al estimular repetidas veces se observa un aumento en la cantidad de espinas dendríticas y sinapsis en la neurona post sináptica.


Ilustración 7 Potenciación asociativa y homo sináptica

Si estimulamos repetidamente a baja frecuencia sucede que la eficacia disminuye cada vez más, lo que se denomina depresión a largo plazo.

Es notable que los sistemas no susceptibles de gran modificación sináptica como el sistema periférico no suelen presentar potenciación a largo plazo y los sistemas más susceptibles de modificación (hipocampo y giro dentado) requieren de mecanismos como la potenciación a largo plazo, proporcionando asociaciones nuevas en lapsos de tiempo significativos entre neuronas activas al tiempo y conectadas entre sí, de modo que coordina las distintas modalidades sensoriales que forman un recuerdo.

Las neuronas del hipocampo reciben conexiones abundantes procedentes de todos los lugares de la corteza cerebral. Por ejemplo “cuando se percibe el olor de una flor se estimula la corteza olfatoria, y cuando se ve la imagen de la flor se activa la corteza visual. Cuando se percibe al mismo tiempo el olor y la imagen de la flor, las sinapsis de la corteza olfatoria con la neurona hipocámpica, y de la corteza visual con la neurona hipocámpica, se activan al mismo tiempo, y por tanto sufren potenciación a largo plazo. Cuando posteriormente se percibe uno de los aspectos de la memoria, por ejemplo sólo el olor de la flor, esto activa la neurona del hipocampo, mediante la sinapsis que se había potenciado, y a su vez esta neurona hipocámpica activa también la imagen de la flor en la corteza visual, y hace que se recuperen los demás aspectos del recuerdo” (Villalón, 2002).


Ilustración 8 Mecanismo de potenciación a largo plazo

El mecanismo para la potenciación a largo plazo es el siguiente: al activarse una neurona desprende un neurotransmisor llamado glutamato (entre otras moléculas), si una neurona post-sináptica esta activa, sus canales al receptor (NMDA en este caso) se vuelven vulnerables al glutamato, abren paso al calcio y al sodio desembocando mecanismos internos que activan determinados genes que codifican proteínas que a su vez, modifican (en forma transitoria o permanente) la constitución de la célula y específicamente de la membrana como la sensibilidad y la capacidad de generar de nuevos receptores.

Es relevante para las actuales investigaciones la presencia de los canales NMDA y su dependencia eléctrica como indicio de plasticidad, “muchos canales asociados con la fuerza sináptica no son fuertemente dependientes del voltaje, su conductividad está controlada por la presencia o ausencia de moléculas particulares. Una implicación de esto es que se puede asumir que una fuerza sináptica tiene un valor más o menos constante” (Anderson, 2007, pág. 163).

Neurogénesis

Hay dos tipos de neurogénesis identificados actualmente en el desarrollo del sistema nervioso de un organismo y en el sistema nervioso maduro.

En el primer caso se presenta como una de las fases del desarrollo embrionario con la producción a gran escala de neuronas y células gliales para formar el sistema nervioso. Las neuronas nacen en centros germinales y luego con ayuda de la glía radial migran hacia su lugar específico en el cerebro, una vez formado el cerebro las glías radiales se convierten en astrocitos, sin dejar oportunidad a futuras migraciones (Jacobson, 1991).

En el segundo caso la neurogénesis fue detectada por primera vez en cerebros adultos de canarios (Nottebohm, 1985) y en vertebrados por el científico y biólogo español José Manuel García Verdugo (José Manuel García-Verdugo, 1988). También se descubrieron las células responsables de la neurogénesis (Lois, 1995).

En aves la neurogénesis es más amplia y regenera zonas enteras del cerebro cada año, especialmente las implicadas en el canto, y en otros animales no mamíferos la formación de neuronas nuevas es muy común y extendida.

En humanos la generación de nuevas neuronas se ha constatado y descrito en diferentes zonas del sistema nervioso: el bulbo olfatorio, el hipocampo y en diferentes áreas de la corteza cerebral (Eriksson, y otros, 1998). También se ha descrito la neurogénesis en la región pre frontal, que controla el proceso de ejecución de decisiones y que está involucrada en la memoria a corto plazo (Jacobson, 1991); también en la región temporal inferior, que actúa en el reconocimiento de caras u objetos y en la región parietal posterior, importante en la percepción de relaciones espaciales y de la imagen corporal (B. Seri, 2001).

La neurogénesis hipocampal ocurre mediante los astrocitos que actúan como células madre (Imura, 2003) en una región basal llamada el giro dentado. Allí hay células precursoras que se dividen y dan lugar a células que migran hacia el hipocampo y se diferencian en neuronas, estableciendo conexiones con otras neuronas (B. Seri, 2001). De esta forma se producen algunos miles de nuevas neuronas todos los días, aunque una buena parte de ellas mueren en cuestión de semanas. Se sabe que un comportamiento inquisitivo y la exploración de medios ricos en estímulos aumentan la neurogénesis y la supervivencia de las nuevas neuronas mientras que el estrés o la ausencia de estímulos la disminuyen (Gould, Reeves, Graziano, & Gross, 1999). La migración no está dirigida por las glías radiales sino que las jóvenes neuronas se mueven a lo largo de sí mismas formando cadenas, por lo que a esta migración se le llama migración en cadena y es unas 3 veces más rápida que cualquier otro tipo de migración celular (Yaschine, 2003).

Un grupo de psicólogos de la Universidad Rutgers y la Universidad de Princeton ha obtenido unos resultados sorprendentes al bloquear la neurogénesis en las ratas. Para ello administraron a los animales una substancia (el metilazoximetanol o MAM) que resulta tóxica para las células en proliferación y disminuyó la neurogénesis hipocampal en un 80% aproximadamente. Las ratas así tratadas y las ratas control fueron sometidas a dos diferentes procesos de condicionamiento, es decir, de aprendizaje de la asociación entre estímulos neutros y desagradables. El primero de ellos consistió en someter a las ratas a un sonido que iba seguido de un estímulo ligeramente desagradable en el párpado. Como es lógico, las ratas control aprendían rápidamente a asociar que después del sonido venía el estímulo, y terminaban parpadeando cuando escuchaban el sonido solo. Se sabe que en el aprendizaje de este tipo de reacciones que implican el recuerdo de dos sensaciones que tienen un determinado orden en el tiempo, se requiere el funcionamiento del hipocampo. De forma notable, las ratas tratadas con MAM reaccionaban al sonido en una proporción mucho menor a las ratas control, es decir, aparentemente no eran capaces de recordar que al sonido le seguía el estímulo desagradable.

Para descartar que el efecto fuera inespecífico, es decir, no relacionado con la neurogénesis, un segundo experimento se realizó haciendo coincidir en el tiempo el sonido y el estímulo desagradable. Se sabe que en este tipo de condicionamiento en el que se desarrolla una especie de “reflejo condicionado” no interviene el hipocampo. Pues bien, en este caso tanto las ratas tratadas con MAM como las ratas control reaccionaron exactamente igual, es decir, parpadeando al escuchar el sonido solo. Habían aprendido por tanto a asociar el sonido con la sensación desagradable que le acompañaba. En las ilustraciones se muestra el aprendizaje por secuencia temporal y el reflejo condicionado siguiendo la representación común presentada en el experimento de Pavlov, donde en vez de administrar un estimulo desagradable a la rata se presenta una campana y un plato de comida.


Ilustración 9 Aprendizaje en secuencia temporal


Ilustración 10 Reflejo condicionado

La incapacidad de responder al estímulo en el primer experimento mostraba una escala temporal muy concreta. Se producía en las ratas que habían sido tratadas con MAM durante dos semanas pero no en las ratas tratadas durante sólo seis días. Esto parece significativo, dado que se calcula que el tiempo que tardan las neuronas recién generadas en migrar desde el giro dentado al hipocampo y establecer sus nuevas conexiones está entre una y dos semanas. Por ello, en las ratas tratadas durante seis días aún debe haber neuronas incorporándose al hipocampo, aunque sus precursores hayan dejado de dividirse. Por otra parte, la capacidad de responder al estímulo se restablece después de suspenderse el tratamiento con MAM, es decir, cuando la neurogénesis ha comenzado de nuevo.

Este experimento muestra la estrecha relación de la neurogénesis con el aprendizaje de eventos separados temporalmente, desconocida hasta hace pocos años por los neurocientíficos. Esto soporta la idea de creación de neuronas en redes que ya han alcanzado su madurez y muestra que es una propiedad que es regulada por la misma red (si bien puede ser alterada por un entrenador mediante agentes externos como el MAM).

Predicción

Rodolfo Llinás relaciona la predicción con una función utilitaria del organismo y que es dependiente de la comprensión natural del cuerpo y del medio que se desarrolla mediante la interiorización del mundo, generar una sola predicción a la vez implica una centralización y a su vez una sincronización del sistema neuronal (Llinás, 2003). Es decir, evolutivamente las limitaciones impuestas por los sistemas de coordenadas que describen el cuerpo se integran internamente llegando a una comprensión natural de su propio cuerpo que depende de la
actividad del organismo (como el juego), a su vez el organismo debe aprender a interactuar efectivamente en el mundo real, por lo que se ve obligado a ahorrar energía y evitar cálculos redundantes, es decir predecir, en base a lo vivido.

La predicción no se lleva a cabo en un lugar determinado pero requiere de un funcionamiento armónico centralizado para tener unanimidad en las predicciones. Para que la predicción sea útil debe generarse con los acontecimientos que ocurren sincrónicamente, por lo que el cerebro divide la información e implementa su atención con base a su importancia, de modo que sin sobrecargarse tome decisiones momentáneas, además debe poder cambiar de una decisión a otra rápidamente. La predicción es entonces una propiedad inherente a los circuitos neuronales y a las neuronas como tal.

Con base a la naturaleza predictiva evolutivamente adquirida por los circuitos nerviosos cuando un patrón de actividad neuronal adquiere significado interno, el cerebro tiende a generar estrategias para proseguir y emitir otro patrón de actividad neuronal.

La necesidad de generar patrones asociados como lo explica Llinás, es para criterio de los autores, la base de la curiosidad pues el individuo necesita que aquello que descubre encaje en el rompecabezas mental del mundo y de las causalidades que de él conoce.

  1. Consciencia e Interiorización

Como ya se mencionó en la sección de neurona y su comunicación, la sincronización de impulsos nerviosos es clave para la consciencia. Los mecanismos bajo los que se presenta la sincronización se han explicado como: enlaces por medio de astrocitos en las sinapsis tripartitas que controlan el disparo, mediante vías directas entre neuronas por la asociación, mediante la hipótesis de los cuarenta Hertz por el grupo de Wolf Singer (Engel, Grey, Singer, 1989) que demostraron que las células corticales posteriores parecen disparar en sincronía durante una experiencia visual consiente a una frecuencia de 40 Hertz; y mediante un efecto de campo electromagnético específico por la sincronización de grupos de neuronas, postulado por Johnjoe McFadden y Dicks (McFadden, 2003).

Rodolfo Llinás explica la importancia de la sincronización neuronal como comportamiento intrínseco de núcleos centrales del sistema nervioso que impulsan las actividades biológicas, actividades como el movimiento permiten formaciones espontaneas temporales o identificación de señales dispersas en una sola representación.

Sistema de control motor

El movimiento organizado de manera intrínseca es generado por circuitos centrales, diversos grupos de neuronas centrales (núcleos), como el núcleo de la oliva inferior desempeñan un papel fundamental en la temporalidad de la coordinación del movimiento, el registro intracelular de las neuronas de la oliva demuestran la existencia de oscilaciones espontáneas, auto generativos (es decir sin entradas) excitatorias rítmicas originando el temblor fisiológico, que impera y todo movimiento se origina en fase con él y nunca puede ser más rápido, Este sistema de control pulsátil, puede preparar uniformemente a un grupo de motoneuronas independientes hacia un rango lineal de respuesta. Este es un posible mecanismo de control de tiempo. Al igual la predicción es posible cuando se pueden calcular segmentos de tiempo bien definidos, de modo que se controlen adecuadamente. Por otro lado si nos damos cuenta las entradas sensoriales no generan el movimiento, solo lo modulan.

El principio motor de la interiorización

Un ejemplo para comprender la actividad eléctrica intrínseca, la sincronización y su papel en la interiorización del mundo externo nos lo da Llinás con el desarrollo embrionario del tiburón:

“El embrión se desarrolla en un huevo con cubierta elástica que permite el paso de oxigeno, para distribuir el oxigeno a todos los tejidos, los fluidos deben moverse para lo cual embrión se ondula continuamente, esta actividad no es aun generada por un sistema nervioso, las células al estar acopladas propagan la señal eléctrica (estadio miogénico). Luego en la medula espinal las neuronas motoras generan axones que migran a la musculatura, en este momento as neuronas están acopladas electrotónicamente y mientras se enlazan con las células musculares, se va desapareciendo el acople entre estas últimas, el primer paso de interiorización de las propiedades de la organización motriz ya que mediante conectividad se representa y se genera el mismo funcionamiento (estadio neurogénico), luego las motoneuronas de la espina dorsal permanecen acopladas hasta que el tallo cerebral comienzan estando acopladas a conectarse con las motoneuronas, además las motoneuronas comienzan a recibir entradas sinápticas de otras partes del sistema nervioso, modificando el movimiento global como el equilibrio”.

Si nos damos cuenta la especialización del generador de patrones en la que por ejemplo logramos movimientos finos y adecuados está ligada a la generación de niveles de complejidad, “el control cerebral del movimiento organizado dio origen a la generación y naturaleza de la mente” (Llinás, 2003).

Las imágenes sensomotoras que emanan de las propiedades intrínsecas del cerebro son básicamente equivalentes a las que emplean colectivos musculares para efectuar movimiento, son estructuras promotoras o patrones funcionales de actividad neuronal que emulan la realidad (externa e interna). Al ser un sistema auto referencial el sistema nervioso depende centralmente de sus propiedades funcionales intrínsecas. El sí mismo es la centralización de las predicciones, pero estas predicciones solo son posibles por el funcionamiento armónico centralizado de la sincronización y no implica autoconciencia (predicciones inconscientes o conciencia central).

  1. Propiedades de las redes neuronales como sistema vivo

La necesidad de definir la vida y sus características mínimas son un paso esencial para esta investigación, la sencillez de la organización de la vida basada en los procesos locales que permiten la emergencia de comportamientos más complejos permiten dar una idea de los procesos neuronales, gracias a la investigación del neurobiólogo Francisco Varela que adopta un enfoque sistémico en el estudio de la vida, podemos intentar establecer el enfoque sistémico en el estudio del aprendizaje.

El autor identifica dos maneras posibles de responder a la pregunta de cuáles son las características definitorias de la vida:

  • Según Historia: Un ser que provenga de otros y que se reproduzca.
  • Según el aquí y el ahora: un ser que tenga las posibles características, que se mueva, que consuma alimentos, que se reproduzca, reacciona a estímulos, tenga ADN, se conforma de células, pero estas características no son suficientes, porque por ejemplo el árbol no reacciona a estímulos, muchos animales no se les puede comprobar en un tiempo mesurable que tengan ancestro como un coral o que cresen, muchas maquinas consumen alimentos.

El énfasis de la vida como un ser en el aquí y el ahora, se escoge porque a pesar de ser cierto que se puede argumentar que sin evolución no se hubiera generad la verdadera vida, pero hay que separar al individuo de las series de tiempo, en la definición que se propone, la evolución es la consecuencia de la vida y no su causa.

Desde la segundo perspectiva se hace necesaria, la identificación de otras características básicas a todos los organismos vivos y que no excluya la posibilidad de que evolutivamente en este u otro planeta no se hubiera escogido la célula como principio. Para esto define Varela en conjunto con Maturana el término autopoiésis, de las raíces griegas para la auto producción, siendo las características básicas que se identifican para un sistema autopoiésico las siguientes:

  1. Borde Semipermeable: El sistema se define por un límite semipermeable constituido por componentes que permiten discriminar entre el interior y el exterior en relación con los componentes relevantes del sistema.
  2. Red de reacciones: Los componentes de la barrera son producto de una red de reacciones que opera al interior de la barrera.
  3. Interdependencia: La red de reacciones es regenerada por condiciones producidas por la existencia de la barrera, es decir la red y la barrera son interdependientes.
Objeto Criterio 1: Criterio 2: Criterio 3: Conclusión
  límite red interdependencia  
virus no no no
cristal no no no no
ameba
mitocondria no no
sección de ADN no no no no

Tabla 1 Vivo o no vivo de acuerdo a los criterios de la autopoiésis

Varela cree que “la relación es lógicamente bastante sencilla: el nivel individual de la organización autopoiésica representa el patrón general de la vida mínima, valido tanto para la vida codificada (ADN) como la no codificada (por ejemplo la vida Artificial) y que requiere de una población con el mismo material genético” (Varela, 2002); donde material genético se refiere al aprendizaje emergente para la vida en la población como sucede con las colonias de hormigas.

Vida y Autonomía

Una forma evolucionada de limitación de un sistema vivo es la generación de la identidad, esta se constituye para diferenciar el sí-mismo (ya mencionado por Llinás), este se puede dar en distintos niveles como una misma frontera del organismo, niveles que se conjugan, en el caso del ser humano, la identidad somática y la cognitiva.

Para la investigación de la posible vida artificial hay que destacar la autonomía y eso significa poner al centro dos proposiciones interconectadas (Varela, 2002, pág. 51).

  • Los organismos son fundamentalmente un proceso de constitución de la identidad.

De manera que es una coherencia generada por un proceso que tiene una naturaleza de cierre operacional cuyo efecto primario es la autoproducción y que puede generar interacciones (de lo global a lo local), los mecanismos de identidad dependen de la trayectoria evolutiva.

  • La identidad emergente del organismo proporciona, lógica y mecánicamente, el punto de referencia para un dominio de interacciones.

El nivel interactivo emergente de la identidad tiene consecuencias sobre la misma identidad y la configuración que tenga (generación del dominio de existencia) crea la perspectiva mediante la cual se crean nuevas interacciones. En otras palabras los sistemas vivos dan lugar a significados.


Ilustración 11 Conceptos clave en la autonomía de lo vivo (Varela, 2002)

Este último punto se evidencia en las características funcionales de muchos sistemas neuronales, como ejemplo la percepción

  1. Propiedades de las redes neuronales como sistema evolutivo

La observación de la evolución de un sistema vivo no solo aporta las claves de cómo surgen organizaciones más complejas, sino que se aclara la posición de los distintos mecanismos, su dificultad (por el tiempo que requirió) de modo que queda claro que usar una estrategia observada sin otras características locales, no corresponde a un sistema natural que evoluciona, caso de los algoritmos genéticos que usan estrategias como mutar y seleccionar, pero requiere de un director que está por encima de la población, el cual quita toda la capacidad de emergencia y aprendizaje real de un sistema natural al olvidar que la evolución darwiniana es consecuencia de la vida, es decir de los individuos de la población, por lo que los individuos deben tratarse más bien como autómatas celulares (Capra, 1998) de modo que los individuos se atraen o repelen y puedan percibir algunas características de los demás individuos.

Estrategias evolutivas:

Las primeras huellas de la vida son de hace 3,8 mil millones de años y la forma de replicación era mediante una fisión, “si se somete un sistema autónomo autopoiésico a turbulencias con olas de fluidos relativamente potentes -lo que sucede con todos sistemas acuáticos terrestres- se producen más fácilmente fisiones” (Varela, 2002, pág. 45), luego en unos pocos millones de años, las células adquieren moléculas que facilitan la fisión o que favorecen las fisiones selectivas con otros organismos, de modo que la reproducción nace en pro de la evolución y no como requisito de la vida.

La aparición de la vida enseña que fue muy costoso evolutivamente aprender a comunicarse entre células, es decir la formación de seres multicelulares, pues la aparición de las primeras células tomó mil millones de años, mientras que la agrupación de células para formar organismos pluricelulares tomó 3 mil millones de años (Mora, 2002); adicionalmente muestra que el orden a partir de las cualidades químicas, es decir la célula se puede considerar como el principio de la vida, pero El ARN siendo una molécula con la capacidad de catálisis enzimático y que además tiene el contenido de los ácidos nucleídos, es decir una doble función que caracteriza lo vivo, es decir se podría pensar que la célula es una simple consecuencia de las posibilidades del ARN y este es el principio, sin embargo desde otro punto de vista (el de Varela, Lynn Margulis, L.Luisi.. Zurich) se estima que el principio indispensable es la formación de una membrana fronteriza, producida por el mismo sistema, entonces el meollo es encontrar células auto producidas sea por ARN o por otras moléculas.

En el trabajo de Frijtjof Capra: “Las conexiones ocultas” (Capra, 2002), se identifican tres formas básicas para la evolución de un sistema:

  1. Mutación aleatoria de genes.
  2. Replicación de genes, principio de la reproducción pero sin combinación.
  3. Intercambio libre de rasgos, ya que las bacterias pueden compartir material genético, como una forma de comunicación.
  4. Simbiosis, definida como la íntima asociación de organismos que se convierte después en una sola forma de vida.

Evolutivamente fue útil interiorizar ciertas emociones para unas especies y para otras no, para generar estados del organismo al referirse a situaciones importantes, como las de peligro (Goleman, 1996). Por eso la generación de emociones se puede localizar (Pasantes, 1997) en el cerebro en el sistema límbico y en particular una pequeña región, el hipotálamo está asociada a muchas conductas emocionales y a funciones como el hambre y la sed, como muestra la figura siguiente.


Ilustración 12 Sistema límbico (punteado), en el cerebro

Esta interiorización de emociones inexistentes en otros organismos, habla de la necesidad de asociar a para dirigir el comportamiento de un sistema, de modo que un sistema artificial que quiera ser plausible biológicamente deberá poder dirigirse según asociaciones a directivas principales como el placer y el dolor.

  1. Propiedades de las redes neuronales como organización

En este apartado se pretende resaltar los principios locales que subyacen a la emergencia de una organización, como los principios de interacción de algunos sistemas conocidos. También se consideran los mecanismos subyacentes a los procesos organizacionales que dan lugar a la emergencia principalmente por la interacción local (Johnson, 2007).

Colonia de Hormigas

Una de las organizaciones emergentes que se ha descrito mediante reglas locales es la colonia de hormigas, la forma en que una hormiga decide unirse en la labor de una tarea, irse a un lugar o comportarse de una manera, se describe mediante interacciones locales, y mediante capacidades de procesamiento de la percepción, en este caso, la hormiga puede entender o mejor aún “percibir”, no solo los carbohidratos del cuerpo de las hormigas con las que interactúa sino la frecuencia de interacción con esos carbohidratos, además también puede diferenciar gradientes de estos carbohidratos, de modo que asocian esas combinaciones a peligro o distintos símbolos que se acompañan de comportamientos. “No se trata de una hormiga transmita un mensaje a otra, lo que ocurre es que cada una puede usar la experiencia acumulada durante interacciones recientes, para decidir lo que tiene que hacer, el mensaje se transmite en forma de interacciones” (Gordon, 1996).

Para Steven Johnson hay unos principios que las hormigas siguen, es decir “si se construye un sistema para aprender desde cero, un sistema donde la macrointeligencia y la adaptabilidad deriven del conocimiento local, deberán cumplirse cinco principios fundamentales” (Johnson, 2007, pág. 71).

  • Más es diferente: Diez hormigas no hacen un hormiguero inteligente, es necesaria la colaboración masiva para la demarcación continua de los distintos aspectos a los que responden.
  • La ignorancia es útil: La simplicidad del lenguaje individual es una característica de los sistemas biológicos así como su intrincada red de relaciones.
  • Alentar los encuentros casuales: Hay una dependencia grande de las interacciones casuales, para encontrar formas de adaptación.
  • Buscar patrones en los signos: La posibilidad de encontrar patrones en las interacciones locales es la clave para que surja el comportamiento global, es decir encontrar mayor rastro de constructoras que de forrajeras las mueve a las hormigas a cambiar de tarea.
  • Prestar atención a tus vecinos: En cada encuentro casual se debe poder percibir un conjunto de señales locales.

Además, según Jonhson, se pueden comparar las neuronas con hormigas y los neurotransmisores con feromonas (Johnson, 2007, pág. 119), en este caso la neurona debe tener medios de percepción y procesos sobre la percepción de manera que pueda captar la neurona con mayor actividad, o la dirección de la mayor actividad neuronal, entre otras posibilidades de interacción local. Si se integra con los mecanismos existentes de asociación neuronal vistos en el apartado “plasticidad sináptica”, se puede llegar a encontrar la lógica de uno de los enigmas de la plasticidad cerebral, como se ve en la figura siguiente.


Ilustración 13 Reconstrucción del daño en el tejido nervioso

Es el caso de la re-conexión neuronal de circuitos desconectados, mediante terapias que parecen corresponder a los mecanismos de plasticidad neuronal como la potenciación a largo plazo, donde hay simultaneidad de activación, pero con circuitos no conectados directamente.

Mecanismos subyacentes al Aprendizaje

Los mecanismos más estudiados y estructurados por psicólogos y cognitivistas son los que implican el aprendizaje, una de las descripciones del procedimiento interno para adquirir conocimiento es el constructivismo y basados en él algunos trabajos de herramientas pedagógicas que se pueden tener en cuenta para una mejor comprensión de estas teorías que toman como base el aprendizaje de los niños, una de ellas es mentefactos de Miguel de Zubiria (Zubiría, 1998).

“El constructivismo considera que los humanos poseemos estructuras internas, denominadas esquemas, con los cuales interiorizamos el mundo exterior, desde las percepciones hasta las formas más avanzadas del pensamiento como la formulación de leyes para explicar los fenómenos naturales. Dichos esquemas se construyen el uno sobre el otro, siendo el primero (el llamado sensorio-motriz) de naturaleza innata. Es este primer esquema el que organiza las percepciones en el recién nacido y sus respuestas motrices a los estímulos percibidos. Los esquemas siguientes se construyen poco a poco, debido tanto al desarrollo del sistema nervioso como a causas externas.

Las causas externas son situaciones a ser comprendidas o problemas a ser resueltos que se le presentan al individuo. Estas le exigen la construcción de esquemas de pensamiento más poderosos. El proceso por el cual un esquema se construye sobre otro sin destruirlo pero aumentando su poder para resolver problemas o representar internamente la realidad se llama acomodación. El conocimiento no consiste meramente en hacer una copia interna de la realidad, sino que el individuo interioriza lo real por medio de sus esquemas. A este proceso en el que el individuo asimila la información o percepción a sus esquemas previos, le llamamos asimilación. En la asimilación los esquemas permanecen inalterados, o se ven modificados, adaptándose a la nueva situación que se les presenta, pero sin discontinuidad con el estado anterior. Discontinuidad que sí está presente en el proceso de acomodación” (Piaget, 1969).

El apoyo neurológico de la construcción sucesiva de esquemas, se ha mencionado artículos de Quartz-Sejnowski (1997) y Hernández (2001). Allí se plantea que existen evidencias neurológicas a favor del constructivismo.

  1. Redes Neuronales Artificiales (RNA)

Actualmente existen muchos tipos de RNA desarrollados en todo tipo de investigaciones particulares, los modelos más conocidos se muestran en la ilustración, adaptación de (Russell, 2004).


Ilustración 14 Clasificación básica de redes neuronales artificiales

Todos los modelos de RNA comparten cierto tipo de características que se pueden definir según la forma en que están construidas (topología), los tipos de proceso que se ejecutan sobre su arquitectura (mecanismos de aprendizaje) y en algunos casos los tipos de asociación, la siguiente clasificación surgió del estudio de los autores de diferentes modelos neuronales artificiales:

  • Topología
    • Número de capas (mono o multicapa)
    • Número de neuronas por capa
    • Grado de conectividad (Cantidad de conexiones entre neuronas)
    • Tipo de conexiones entre las neuronas (hacia adelante, bidireccional)
  • Mecanismo de aprendizaje
    • Entrenamiento
      • Supervisado:
        • Aprendizaje por corrección de error
        • Aprendizaje por refuerzo
        • Aprendizaje estocástico
      • No supervisado:
        • Aprendizaje Hebbiano
        • Aprendizaje competitivo y cooperativo
    • Modificación de conexiones, (destrucción, creación)
    • Modificación de pesos
  • Tipo de asociación realizada entre la información de entrada y salida:
    • Hetero asociación (aprende parejas de datos)
    • Auto asociación (realizará una auto correlación, con datos almacenados)

Si bien existen muchos tipos de redes en cada clasificación, todas se basan en el mismo principio de comunicación neuronal. Del modelo biológico de la neurona se desprende el modelo artificial que se muestra en la ilustración, denominado neurona estándar (José Ramón Hilera Gonzales, 1994).


Ilustración 15 Representación artificial de una neurona y su información

Una neurona j tiene entradas xij que representan una sinapsis i con j, cada entrada pasa a través de una ganancia wij denominada peso sináptico que refuerza o debilita la conexión (aumentando o disminuyendo la señal de entrada) y que es la variable fundamental en los modelos de RNA. Estos pesos pueden ser positivos o negativos, simulando estímulos excitatorios o inhibitorios respectivamente (recuerde la sinapsis química) (Viñuela, 2004); el nodo integrador suma todas las señales de entrada multiplicadas por sus respectivos pesos y pasa este valor a la función de activación f que determina si la neurona se debe disparar o no (Tanco, 2003). La ecuación (1) es la representación matemática de este proceso, siendo j la salida de la neurona j con n neuronas que se conectan a ella.


La función de activación f suele ser una función escalón, signo, lineal, sigmoidal o hiperbólica. La idea de esta función es permitir la activación de la neurona a partir de cierto umbral. El valor b o ganancia se agrega para añadir un grado de libertad adicional y en el caso de que la respuesta de la neurona sea todo ó nada representa el umbral de activación.

  1. Aprendizaje

El aprendizaje de las RNA es un proceso matemático bien definido que se basa en la ubicación de hiperplanos que separen espacios de estados específicos (Facultad de Ingeniería Eléctrica de la Universidad Tecnológica de Pereira, 2003) o vectores representantes de un espacio de estados (como se aprecia en la ilustración 15).

La regla de aprendizaje para la mayoría de RNA está basada en el aprendizaje Hebbiano definida por Donald Hebb en 1949 (José Ramón Hilera Gonzales, 1994). En este modelo se definen 3 elementos básicos: La salida de la red, la salida deseada de la red y un ritmo de aprendizaje. Con los dos primeros valores se obtiene un error y este error forma parte de un proceso de actualización de pesos dado de forma genérica por la ecuación:


Donde e es el error y p es el ritmo de aprendizaje que determina qué tanto cambian los valores en cada etapa de aprendizaje. El error puede tener distintas consideraciones dependiendo de si la RNA tiene aprendizaje supervisado o no supervisado. Sin embargo, en el aprendizaje no supervisado la red tiene un referente de la salida deseada por lo cual el error se puede tomar de forma genérica como


Donde es la salida de la red y es la salida deseada de la red. Note que según (2) la red solo modifica sus pesos cuando la respuesta no es satisfactoria, si el error es cero, los pesos no cambian. Este aspecto quita dinamismo y la posibilidad de buscar soluciones más estables.

Razón de olvido

De las redes asociativas se puede tomar un elemento muy importante que se integra a los procesos de aprendizaje y que en los contextos de las neurociencias es fundamental: el olvido. Es así como a la regla de Hebb se le puede agregar un valor para que el peso de la sinapsis no se incremente de forma indefinida y así la red recuerde solamente los últimos valores actualizados, se define a la razón de olvido y se implementa de la siguiente forma.


De esta manera si →0 queda la regla de Hebb original, mientras que sí →1 la sinapsis se modifica sin tener en cuenta su estado anterior.

La regla anterior implica un concepto importante pues el olvido es uno de los criterios para hacer selección neuronal (Viñuela, 2004), además de ser un proceso en el que se permite la búsqueda de nuevas alternativas para resolver un problema dado.

  1. Arquitecturas

La arquitectura de la RNA hace referencia a la forma en que se conectan las neuronas artificiales, generalmente estas conexiones se presentan entre conjuntos de neuronas específicos formando capas. Las neuronas en una capa podrían no conectarse entre sí pero se conectan al menos a una neurona de otra capa (Anderson, 2007). Se definen 3 tipos básicos de capa: capa de entrada, que recibe las señales del exterior; capa de salida, que establece las salidas de la red y; capas ocultas, entre la capa de entrada y de salida que no necesariamente están presentes en la red, con el fin de degenerar más espacios de estados en la red (James A Freeman, 1993).

Arquitecturas evolutivas

Una arquitectura evolutiva consiste en una red que es capaz de cambiar su propia estructura, ya sea en las conexiones entre neuronas o incluso agregando o quitando neuronas. La estructura de la RNA se suele dejar como problema al diseñador quien debe ir probando qué arquitectura le servirá para resolver un tipo característico de problema, sin embargo, una red que puede tratar este problema por sí misma se asemeja más a los procesos biológicos y resulta especialmente conveniente para problemas no completamente definidos donde la prueba y error del diseñador pueden dar resultados infructuosos.

Se han planteado modelos donde se combinan las técnicas de los algoritmos genéticos y la lógica difusa para desarrollar arquitecturas evolutivas (Lebiere, 1990) (Jutten, 1995). Generalmente se calculan las posibles redes que pueden derivarse de la red inicial y se determina cuál de estas es la que mejor soluciona el problema, sin embargo este cálculo de posibles redes conlleva altos costos de procesamiento y por tal razón, no resulta eficiente aplicar estos modelos en la mayoría de los casos, por lo cual se prefiere un diseñador con experiencia. Otros trabajos estudian el desarrollo de algoritmos incrementales para la determinación del número de interneuronas y se van adaptando a medida que se reciben los patrones (Platt, 1991).

  1. Limitaciones

Las RNA como las redes biológicas requieren de cierta estructura de interconexión que le permita responder bien a los estímulos del medio. Es un problema típico en este campo el definir una arquitectura adecuada para la solución de problemas particulares. En el caso biológico y a través de la evolución, ha sido la misma red quien se ha encargado de modificar su arquitectura para adaptarse. Es muy conocido el caso del Perceptrón simple que nunca puede aprender el patrón que genera la función lógica XOR, pues no es linealmente separable (Papert, 1987). Este caso se extiende para todo tipo de problema que requiere una arquitectura que pueda delimitar su espacio de estados.

También es sabido que aspectos como el paralelismo, y más que el paralelismo la unicidad en el procesamiento (Penrose, 1999), no ha sido posible aplicarlo en RNA de gran tamaño pues hay requerimientos de computo muy grandes de por medio.

  1. Fases para la implementación

En muchos casos se toma el diseño y pruebas de una RNA como algo trivial que se inicia con pruebas apriorísticas hasta obtener un resultado deseable. Sin embargo la realidad del trabajo con RNA en un entorno donde se requieren estudios concretos está muy lejos de ser así. Se debe hacer un análisis de si el modelo en RNA aplica para dar solución al problema, si el problema se puede dividir y en que partes del problema resulta conveniente manejar un modelo neuronal, tener en cuenta consideraciones estadísticas antes de la presentación de los datos, representación de la información y muchos otros detalles que generalmente pasan desapercibidos.

Para implementar una RNA se han propuesto 9 fases en el libro “Redes Neuronales y Sistemas Difusos” (Brío, 2003), estas fases son los siguientes:


Ilustración 16 Fases de implementación de una RNA

Estos pasos se detallarán en las secciones siguientes, pues cada una requiere la revisión de diferentes aspectos particulares, enfocados a los aspectos concretos del problema.

  1. Planteamiento del problema

En esta fase se debe decidir en qué módulos del sistema a trabajar es recomendable usar RNA pues seguramente no será necesario usarlas en todo el sistema.

  1. Requerimientos del sistema

Se establecen los requerimientos y servicios del sistema donde se haya decidido usar RNA, así como los criterios y restricciones de la representación de datos de entrada y de salida.

  1. Revisión bibliográfica

Se deben revisar los documentos disponibles para repasar criterios a tener en cuenta en el modelamiento de redes específicas. De la misma forma se recomienda consultar fuentes que ya hayan tratado un problema similar al trabajado.

  1. Elección del modelo de RNA

Una vez se conoce lo que se desea alcanzar se puede establecer el tipo de red que se diseñara. Para predicción y simulación la red que más se suele emplear es la red Perceptrón multicapa con BP; en el caso de la exploración de datos e identificación de patrones se usan los Mapas Auto Organizados de Kohonen aprovechando su capacidad para realizar proyecciones de los datos.

La red más usada es la BP, según Fogelman se usa en más del 70% de los casos y los mapas de Kohonen en un 15%, LQV ART y Hopfield son usadas también. Ya que el Perceptrón multicapa es la red más usada el modelo se ha propuesto para funcionar sobre esta red y con el aprendizaje BP aunque se espera que se desarrolle un modelo de aprendizaje más acorde al modelo biológico.

  1. Datos disponibles y selección de variables relevantes

Según los requerimientos del sistema es posible hacer una selección inicial de variables, por ejemplo si se desea predecir los niveles de criminalidad (w) en una zona según el número de personas (x) y el número de policías en la zona (y); x e y son variables de entrada del sistema y w la variable de salida. Los datos que proveen información al problema que se desea resolver deben ser analizados para definir cuáles serán utilizados en el modelo neuronal y cuáles no son relevantes o dan información redundante ya presente en otros datos (por ejemplo una variable sobre la cantidad de niños podría tener la misma tendencia de respuesta al número de personas, por lo cual se haría innecesario manejar una variable adicional).

Es posible que los datos estén presentes todos de una vez y que se desee entrenar la red una sola vez con esos datos, o bien, que se desee re entrenar la red con cada caso nuevo; para de esta forma determinar si se usa aprendizaje por lotes o aprendizaje en línea, respectivamente.

  1. Elección de los conjuntos de aprendizaje y test

Se debe tener en cuenta que datos se usarán para el aprendizaje y para la validación cruzada, por lo general se usa un 80% del conjunto de los datos para entrenamiento y el 20% restante para validación. Esta elección de datos también se debe ajustar a un estudio estadístico para no tener redundancia o independencia de datos; por ejemplo, usualmente se desea que la red posea un buen grado de generalización por lo que se buscan datos que tengan mayor varianza entre sí, esto permitiría a la red aprender patrones muy diferentes y prepararla ante nuevos patrones de entrada.

  1. Pre procesamiento

En esta fase se procesan los datos disponibles para que representen la información en el mismo término de valores, una solución usual es normalizar todos los datos de entrada, es decir, reducir su rango a [0,1] o también usar el intervalo [-1, 1] para de esta forma conocer con claridad el peso real de las diferentes variables. Es recomendable usar técnicas estadísticas de muestreo para asegurar que los datos tengan una buena distribución (James A Freeman, 1993).

Además en esta fase se potencian las variables que ya se conoce que tienen mayor relevancia que otras, usando incrementos parciales en sus valores o potenciando esos valores con la misma red a través de una capa con función de transferencia lineal, de esta forma es como se incorpora información apriorística al modelo.

En la literatura de procesamiento de señales y de RNA se encuentran diferentes técnicas para el pre procesamiento de la información basados en el control de datos y la optimización numérica (José Ramón Hilera Gonzales, 1994) (Russell, 2004). Sin embargo, también se han realizado estudios interesantes sobre la representación de la información en sistemas biológicos como los canales de luz en la retina o las ondas sonoras percibidas por el murciélago (Anderson, 2007), se recomienda al lector revisar esta fuente ya que es una buena introducción a las similitudes y diferencias entre RNA y redes neuronales biológicas, incluyendo aspectos no tan usuales como la representación de la información que se acaba de mencionar.

  1. Proceso de entrenamiento

Esta fase es la más decisiva del proceso pues se verifica si todas las fases anteriores se realizaron correctamente o es necesario hacer correcciones en la selección de variables (pueden ser insuficientes o estar mal relacionadas), en los conjuntos de entrenamiento y de prueba (pueden no ser representativos), en el pre procesamiento o en el tipo de red que se pretendía usar; incluso podría llegarse a la conclusión que su solución por RNA no es viable.

En esta fase, principalmente experimental, se determina la topología de la red, los pesos iniciales, el factor de aprendizaje, condiciones de parada y otras variables según lo requiera la red (como el momento en una red BP con optimización); se realizan diferentes experimentos donde se van modificando estas propiedades de la red y establecer si es posible la mejor configuración. En la fuente de Bonifacio (Brío, 2003) se exponen algunos métodos para la definición de estas variables:

  • Pesos iniciales: Normalmente se usan valores aleatorios entre [–x,x] donde x lo define el diseñador, en una red perceptrón multicapa existen algunas heurísticas más avanzadas que se analizarán más adelante por ser un caso concreto. En la reseña de Bonifacio se exponen también técnicas de minimización de funciones que representan el valor de los pesos y la salida de la red como los algoritmos genéticos (para minimizar) o la regresión lineal. Sin embargo estas técnicas suelen usarse para todo el entrenamiento de la red y no solo inicialización.

  • Factor de aprendizaje: El factor de aprendizaje determina que tanto se modifican los pesos y oscila en [0,1], un valor cercano a 0 hace el entrenamiento más lento y puede hacer que el proceso se quede fácilmente en mínimos locales; por otro lado, un valor cercano a 1 provoca cambios bruscos en los pesos y hacer que la red no se estabilice y no converja a ningún valor. La mejor opción en este caso suele ser variar el factor de aprendizaje de acuerdo al comportamiento del error, por lo cual su valor inicial no sería tan relevante y se ajustaría de cualquier manera.
  • Neuronas ocultas: Uno de los procesos más delicados consiste en definir el número de neuronas y las capas ocultas de la red. Si el número de neuronas no es suficiente el proceso de entrenamiento no tendrá un error aceptable y muchos patrones de entrenamiento no estarán bien clasificados; por otro lado, si el número de neuronas es excesivo se alcanzarán tantos grados de libertad que habrá un sobre entrenamiento de la red, disminuyendo su grado de generalización.

    El número de capas ocultas de la red se puede determinar de forma aproximada teniendo en cuenta las demostraciones matemáticas de Hetch, Lapedes y Deneker que se expusieron anteriormente para el caso del MLP. Determinar el número de neuronas en cada capa es un proceso más experimental y generalmente realizado por el diseñador, aún cuando es una propiedad de la red y no del entrenador; en el libro de Bonifacio se describen los métodos usados para definir la topología de la red (Brío, 2003):

    Recetas: Ciertas consideraciones empíricas como determinar que el número de pesos de la red debe ser aproximadamente 1/10 de la cantidad de patrones de entrenamiento para alcanzar un buen grado de generalización; otras son más platónicas y se basan en la construcción de figuras geométricas como pirámides.

    Prueba y error: Este proceso se realiza haciendo el proceso de entrenamiento para diferentes arquitecturas y revisando el error resultante con validación cruzada, de esta manera se queda con la configuración de red que haya obtenido el nivel de error más bajo.

    Métodos dinámicos: Las arquitecturas evolutivas que se mencionaron anteriormente suelen ser usadas en casos donde la red contiene gran cantidad de variables y su patrón de regularidad no es obvio, haciendo una aproximación matemática de la topología un proceso muy complicado. Es en esta fase y en esta clasificación, donde el modelo propuesto espera lograr avances significativos, siendo una herramienta básica de uso para el desarrollo de una RNA tanto para fines investigativos como comerciales.

  1. Evaluación de resultados

Una vez se tiene la configuración adecuada de la red, tanto en topología como en los valores de sus pesos y bias que generan el error mínimo en el entrenamiento, se procede a realizar pruebas con nuevos casos (no encontrados ni siquiera en el conjunto de test) para probar objetivamente la eficacia de la red ante nuevos eventos, si los resultados siguen siendo favorables se puede emplear la RNA en un entorno de trabajo real.

En esta fase se puede determinar también si el rendimiento de la red es adecuado para el entorno en el que se desea emplear o sí es necesario realizar más ajustes para cumplir los requerimientos del usuario. En esta fase se puede hacer una validación de requerimientos para soportar de una forma más confiable el proceso realizado.

  1. Perceptrón Multicapa (MLP) y Backpropagation

Las redes perceptrón multicapa o MLP por sus siglas en inglés, nacieron por la necesidad de tratar sistemas no lineales, siendo el ejemplo más conocido, la función XOR que presenta una representación en el espacio de estados no lineal. Sin embargo no había sido posible establecer un algoritmo de entrenamiento para este tipo de redes ya que se desconocía el error de referencia que debían tomar las neuronas de las capas ocultas.

La formulación original del MLP se debe a Rosenblatt (1969), pero no proporcionó un algoritmo de entrenamiento. Hasta el día de hoy los algoritmos más conocidos de entrenamiento del MLP funcionan con retropropagación, siendo el más conocido y usado de todos el backpropagation. Además del backpropagation existen redes como la de Elman, soportadas por algoritmos como el de Chemotaxis (Universidad Tecnológica de Pererira, 2009) y optimizaciones basadas en retro propagación como el Momento (con el que se trabaja también la rata de aprendizaje variable), el algoritmo de gradiente conjugado de Levemberg Marquard, entre otros.

Varios algoritmos de entrenamiento se propusieron para el entrenamiento de redes multicapa, pero como es normal en la investigación, después de varios años fue que se popularizó un método basado en la propagación hacia atrás del gradiente del error medio cuadrático, que es en últimas una generalización del algoritmo LMS de la red Adaline y que se deriva de la regla delta de Widrow-Hoff (Facultad de Ingeniería Eléctrica de la Universidad Tecnológica de Pereira, 2003). Este método requería de un procesamiento hacia atrás de la red por lo que fue denominado Backpropagation.

El backpropagation es el algoritmo de aprendizaje más usado actualmente, se cree que se usa en más del 70% de las aplicaciones prácticas (Brío, 2003), debido principalmente a su relativa sencillez de implementación y a que no requiere una comprensión matemática detallada para poder sugerir que es lo que hace.

Algoritmo de entrenamiento

El funcionamiento del backpropagation se puede resumir en una propagación hacia adelante en la cual se estimula la red y se obtiene la salida y una propagación hacia atrás en la cual se calcula el error a partir de la salida deseada y la salida de la red y se van haciendo correcciones capa por capa mediante derivadas sucesivas del gradiente.

La idea general del entrenamiento resulta en una hipótesis de que cada neurona de una capa oculta se asocia a una característica, esto se logra basándose en que el algoritmo en cada capa debe minimizar el error medio cuadrático, lo cual se realiza por medio del cálculo de la sensitividad que se explica a continuación.

Cuando la red termina su ejecución normal se obtiene una salida y con ella se obtiene un error para cada neurona, con este error se calcula el valor de sensitividad para la última capa con una fórmula particular (Facultad de Ingeniería Eléctrica de la Universidad Tecnológica de Pereira, 2003), la ecuación es matricial:


Donde:

: Valor de la derivada de la función de transferencia calculada en la salida n de la neurona final.

: Error de la neurona de la última capa.

La fórmula matricial para el cálculo de la sensitividad de las otras capas está dada por:


Donde:

: Valor de la derivada de la función de transferencia calculada en la salida n de la neurona en la capa X.

: Pesos de la capa X. La T nota la matriz traspuesta.

: Valor de la sensitividad de la capa siguiente.

Con los valores de sensitividad para cada neurona se puede hacer la actualización de pesos y bias a partir de las siguientes ecuaciones:



Donde:

: Rata de aprendizaje entre 0 y 1.

: Valor de sensitividad de la neurona calculado en esa iteración.

: El valor de entrada de esa neurona.

Las derivadas para las funciones de transferencia más usadas son las siguientes:

Logarítmica Sigmoidal:             

Tangencial Sigmoidal:             

Lineal:                 

Un ejemplo concreto se puede encontrar en el modulo para red MLP de la facultad de ingeniería eléctrica de Pereira (Facultad de Ingeniería Eléctrica de la Universidad Tecnológica de Pereira, 2003). A partir de la formulación y el ejemplo del backpropagation se pudo realizar un análisis más detallado para modificar la representación del algoritmo y manejarlo por medio de ecuaciones a nivel neuronal y no ecuaciones matriciales a nivel de capa; este proceso será de gran importancia cuando se implemente este algoritmo como función básica de cualquier red neuronal actual, debido a ser el más utilizado.

Inspiración biológica y problemas de compatibilidad

Si bien el backpropagation se basa en forma escalar, en la regla delta de Widrow-Hoff de la cual se ha comprado su relación con el aprendizaje biológico (Anderson, 2007), la escalabilidad que le permitió solucionar redes multicapa por medio de retropropagación es la misma que alejó al backpropagation de ser un algoritmo basado en el comportamiento neuronal.

A continuación se describen 7 problemas identificados en el Perceptrón y que han sido descritos por distintas fuentes (Facultad de Ingeniería Eléctrica de la Universidad Tecnológica de Pereira, 2003) (Anderson, 2007) (James A Freeman, 1993):

  • Se puede quedar en mínimos locales. Incluso por la experiencia con el modelo se mostrará que es sensible a condiciones iniciales. La solución a la función XOR con la arquitectura adecuada puede no alcanzarse si los pesos iniciales se encuentran en ciertos rangos de valor.
  • Depende del supuesto que minimizar el error es lo correcto. Este es un punto importante pues es sabido que en la biología no se busca la solución óptima, sino la solución que dé resultado, si bien la optimización se produce con las generaciones. ¿Hasta qué punto la optimización dependería de un modelo basado en generaciones?
  • Si el aprendizaje dura más de lo necesario hay sobre-ajuste. Esto implica que la red aprende los patrones de entrenamiento incluido el ruido, por lo cual su grado de generalización se pierde al intentar probar la red con nuevos estímulos.
  • Se considera que el backpropagation requiere de tiempos para aprendizaje extremadamente largos debido a que involucra cálculos de derivadas en su proceso. En este punto cabe mencionar nuevamente cuál sería el proceso de aprendizaje realizado en las redes biológicas y si es posible encontrar en el mundo natural, algún tipo de sistema que pueda representar la variación como un concepto implícito de derivada.
  • En sí el backpropagation no es biológico, no hay evidencia de pesos acoplándose retrógradamente. Si bien hay pesos que se retroalimentan no existe evidencia de que lo hagan por cada sinápsis y mucho menos que contengan información del error, pues el concepto de error mismo puede no manejarse de una forma tan explícita en un organismo. Como ya se mencionó, la regla Delta de Widrow-Hoff ha sido estudiada para determinar su plausibilidad biológica y hoy esta soportada por la teoría del condicionamiento clásico en el modelo de Rescorb-Wagner (Anderson, 2007) a partir de experimentos realizados con ratas y la forma en que el aprendizaje se iba dando en ambos casos.
  • Des-aprendizaje, por aprender un patrón, olvida otro. Este aspecto tiene diferentes formas de solución en las RNA, mediante un buen diseño, modificación en la presentación de los datos y en la representación de los datos mismos. Biológicamente el des-aprendizaje es un fenómeno que ha sido estudiado y hasta el momento es totalmente plausible que olvidar algunos aspectos se deba al aprendizaje de otros y no solo por degeneramiento de la red.
  • En la mayoría de casos se desconoce lo que sucede en las capas ocultas.

    Este problema es muy conocido en las RNA multicapa y han sido criticadas por ser cajas selladas que permiten a un usuario obtener información que requiere, pero de no tener la más mínima idea de cómo la obtuvo.

Para cada caso del MLP y del backpropagation se han hecho estudios específicos como se mostrará en los siguientes apartados.

Arquitecturas de Perceptrón Multicapa

Las redes multicapa unidireccionales que se entrenan por medio del algoritmo Backpropagation han sido ampliamente estudiadas para hallar patrones matemáticos y de esta forma establecer ciertos sobre la arquitectura de la red. Se tiene conocimiento básico de algunos de estos estudios y demostraciones (Brío, 2003): Denker y sus colaboradores demostraron en 1987 que toda función booleana podía ser representada por una red MLP con una capa oculta (es esta configuración la que soluciona el típico problema del XOR), Lapedes y Farber demostraron en las mismas fechas que una red MLP de dos capas ocultas podía representar cualquier función arbitraria, Hetch-Nielsen demostró que una arquitectura MLP con una capa oculta era en sí un aproximador universal de funciones, soportado principalmente por el teorema de Funahashi el cual establece que un MLP con una capa oculta puede aproximar hasta el nivel deseado cualquier función continua en un intervalo, ya que la función de salida de esta red es análoga a la representación convencional de una función periódica como un desarrollo en serie de Fourier de sinusoides.

Otra demostración que incluso da pistas sobre las funciones de transferencia también la da Funahashi basado en la red de Elman, la cual posee generalmente neuronas con función transferencia sigmoidal en su capa oculta (tangenciales y logarítmicas las más conocidas) y neuronas con función de transferencia tipo lineal en la capa de salida, la ventaja de esta configuración de la red con esas funciones de trasferencia es que “puede aproximar cualquier función con la precisión deseada mientras que esta posea un número finito de discontinuidades, para lo cual la precisión de la aproximación depende de la selección del número adecuado de neuronas en la capa oculta” (Funahashi, 1998).

Sin embargo, a pesar de que estos teoremas demuestran la posibilidad de aproximar funciones con un número de capas dado, no pueden especificar cuantas neuronas se necesitan usar y en el peor de los casos, pueden llegar a necesitarse tantas neuronas que no sería viable la construcción de una red de estas características, siendo mucho más óptima una nueva arquitectura con una capa adicional (Haykin, 1999) (Principe 2000). Aún dado el caso de que sea posible construir una red que aproxime una función continua dada con una capa oculta con un número X de neuronas, puede ser mucho más óptimo construir una red de dos capas que permitirá un entrenamiento más rápido con un menor número de neuronas total.

Computacionalmente y soportado por el principio de Occam, los diseñadores de RNA han establecido que una red debe ajustar su tamaño de acuerdo a la complejidad del problema, limitando en lo posible su tamaño para evitar la aparición de sobre entrenamiento. Esto también se ha verificado en las redes biológicas donde el consumo de energía debe minimizarse y lo que no tiene utilidad, muere; tal como se estudio en la revisión de biología de las redes neuronales, es una falsa creencia que solo usemos un porcentaje pequeño de nuestra capacidad real del cerebro.

Heurísticas de aceleración del proceso de aprendizaje BP

Se han estudiado diferentes forma de optimización basadas en la experiencia computacional, más no son conocidos métodos de optimización basados en la naturaleza (las redes neuronales con algoritmos genéticos han intentado integrar este aspecto, pero su sustento operacional no es precisamente biológico). Fahlman en 1988 realizó varias pruebas con el BP y llegó a ciertos resultados como por ejemplo usar funciones de transferencia bipolares con un dominio positivo-negativo ([-1, 1] por ejemplo) acelera el proceso de aprendizaje sobre funciones de transferencia bipolares con dominio positivo ([0, 1]) ó negativo ([-1, 0]).

Incluso detalles más específicos como usar funciones de transferencia f(x)=a.tanh(b.x) con a=1.7159 y b=2/3, o por ejemplo usar valores iniciales de los pesos entre [-2.4/N, 2.4/N] donde N=número de entradas de la neurona.

Partiendo de modificaciones de este tipo han surgido algoritmos derivados del BP que son más óptimos, como el conocido Quickprop (informa sobre derivadas segundas sin tener que derivar, eso estudiando el comportamiento del error en iteraciones anteriores) y el SuperSab (donde los pesos tienen ritmos de aprendizaje diferentes que varían en cada iteración).

  1. Redes generativas de aprendizaje supervisado

Las redes generativas de aprendizaje supervisado, en el marco de la psicología computacional del desarrollo, pretenden darle al constructivismo un fundamento que demuestre que es posible la construcción de esquemas cada vez más poderosos, a partir de un esquema inicial, ya que el humano no tiene conceptos innatos.

Se quiere crear una red que sea capaz de realizar tareas que, en el niño, son posteriores al lenguaje ya que según Piaget, con la adquisición del lenguaje se desarrolla la capacidad de representar, pues la representación es la asimilación a través de símbolos.

Uno de los algoritmos de redes generativas, que intentan describir la manera en la que aprenden los niños es el cascada-correlación. (Mareschal y Shulz, 1996), estas redes supervisadas alternan dos procesos, que pueden ser asociados con los dos procesos de asimilación y acomodación.

Se definen dos fases en la red, la e entrada y la de salida, en la de salida la idea es ajustar los pesos que van hacia la salida (tanto de capa de entrada como oculta) tratando de alcanzar la salida esperada, lo que se asimila al proceso psicológico de asimilación.

En la fase de entrada se entrenan varias unidades escondidas, modificando sus conexiones de entrada y se incorpora a la red la que mejor se correlaciona con el error actual. Con la adición de unidades la red adquiere mayor capacidad de representación, y hay un cambio en los esquemas, lo cual se puede asimilar al proceso psicológico de acomodación.


Ilustración 17 Fases de las redes de correlación-cascada

La red está compuesta por una capa entrada, una oculta y una de salida y la unidad que se adiciona a la red no forma nuevas capas, solo agranda la capa oculta, la razón teórica de esto son los teoremas que demuestran, que cualquier función input-output puede ser aproximada si se agregan suficientes unidades escondidas con pesos adecuados. Mareschal y Shultz (1996) citan varios de esos teoremas y comentan el teorema de Cybenko y su demostración. El teorema dice que una red con una sola capa de unidades escondidas cuyas funciones de activación son sigmoidales, es capaz de aproximar cualquier función input-output agregando suficientes unidades escondidas, con los pesos y las funciones de activación adecuadas.

Esta red presenta técnicas de algoritmos evolutivos ya que a cada posible nueva configuración la entrena y luego escoge la mejor configuración, con la diferencia de que lo hace paso a paso con un proceso de producción de nuevos nodos, todos con las mismas conexiones pero con distintos pesos. El criterio de mejor configuración es el del nodo que presente mejor correlación, que es la correlación entre la activación de la unidad escondida candidata j y el error de la red.

Cada unidad escondida que se incorpora recibe señal de todas las unidades de entrada y las escondidas anteriores, tomando forma de “cascada”. De allí el nombre del algoritmo.

Se han modelado distintos esquemas o tareas (que involucran varios esquemas) mediante cascada-correlación, con resultados exitosos: adquisición de la noción de torque, ordenación, relación entre velocidad desplazamiento y tiempo, aprendizaje de los pronombres personales, etc (Mareschal y Shultz, 1996).

  1. POSIBILIDADES ARTIFICIALES derivadas de LA BIOLOGÍA

Para que se entienda la utilidad de los resultados y descripciones presentadas en los antecedentes, se debe especificar que tan acordes a la biología son los modelos artificiales, así como explicar algunos modelos que cumplan las características de sistemas biológicos o que usen mecanismos locales similares a los descritos, que resulten útiles artificialmente.

  1. Plausibilidad biológica de los modelos convencionales

A continuación se analizan algunos modelos artificiales y como se han mantenido compatibles con la base biológica

Organización Neuronal

Las células de sistema nervioso son células que emergieron a partir de las interacciones de un organismo con su medio, es decir está determinado por el organismo y su evolución, de modo que la organización del sistema neuronal está escrito externamente e internamente en su propia evolución como sistema, de modo que las reglas locales y globales que rigen el comportamiento están tan intrincadas como para requerir el 45% código genético para su organización, lo cual deja a las redes neuronales como simples redes de células, que todavía tienen que especializarse y adquirir una memoria de todas las funciones interiorizadas en su organización, la preexistencia de una organización se evidencia en las fases aceleradas del desarrollo del sistema nervioso de un organismo en su estado embrionario y natal, ya que al contrario de cómo sería un desarrollo evolutivo de una población neuronal en la que se prueban distintas estrategias cada vez para la mejora, el sistema se acelera y aplica múltiples pruebas sobre la primera proliferación neuronas produciendo una muerte masiva de células, llegando a casi la mitad del sistema ya desarrollado.

Por la evidencia de los múltiples niveles de organización que subyacen a las redes neuronales implica que en este momento las redes neuronales artificiales RNA o siguen siendo totalmente estructuradas y organizadas por un diseñador externo al sistema, o adquieren estrategias de acoplamiento, como sucede con todas las células que forman un sistema multicelular.

Estrategias para la Solución de Problemas

El campo emergente de la neuroetología demuestra el acoplamiento entre la organización del sistema nervioso según su historia evolutiva, “no debería sorprendernos, de hecho, deberíamos esperar, que los cerebros (o las redes neuronales) no puedan computar todo, sino simplemente llegar a soluciones razonables para un pequeño pero útil conjunto de problemas” (Anderson, 2007)
de esa manera la forma de solucionar problemas de las RNA es compatible con la adquirida por la naturaleza.

El dogma recibido en la teoría de las redes Neuronales dice que las sinapsis varían en fuerza, y que estas, esto es, las detalladas interacciones entre muchas neuronas, son la clave de la naturaleza de los cómputos que realizan las redes neuronales, La mayoría de los neurofisiólogos concuerdan con este supuesto, pero, por excepto algunos casos especiales, como el ganglio abdominal de la Aplysia y el ojo del Limulus, la evidencia detallada de esto es sorprendentemente escasa. Es difícil pensar en alternativas plausibles, sin embargo.” (Anderson, 2007).

Asociador lineal y memoria:

Una interesante trabajo sobre la memoria lo podemos encontrar en el capítulo 6 del libro Redes Neurales de James A. Anderson (Anderson, 2007), a continuación el resumen de lo más importante de su trabajo.

El funcionamiento de la memoria ha sido un tema muy discutido en la ciencia, una de las posibilidades sería que el medio físico para la información fuera pequeño, como moléculas de proteínas o ARN, pero es difícil descubrir mecanismos eficientes para el almacenamiento o la rápida recuperación, los experimentos que soportan esta teoría no son reproducibles o tiene otras explicaciones alternativas. Tampoco hay indicación de grandes áreas en blanco del cerebro están esperando a ser llenadas y seria evolutivamente improbable por el alto grado de consumo energético innecesario, También podría ser posible que los péptidos, los cuales a veces pueden actuar como neurotransmisores, podrían en su cambiante concentración imitar a la memoria, y por último la mayoría de los neurocientíficos asumen que la base de física de la memoria yace en los cambios en las fuerzas de conexión entre las neuronas, pero raras veces se a localizado un enlace directo entre una sinapsis modificable y una conducta modificada, a causa de por ejemplo actividad electrofisiología, casos como la respuesta de escape a sifón de del molusco gastrópodo Aplysia.

Para construcción de un sistema artificial para el almacenamiento de memoria mediante la modificación de conexiones la primera idea intuitiva es aplicar el reforzamiento por uso, dependiente únicamente de la neurona pre sináptica o dependiente tanto de la actividad de la pre sináptica como la post sináptica, este modelo de fortalecimiento por uso ha sido aplicado en la psicología con cierto éxito.

La idea usada en los modelos existentes, como ya lo vimos en las Redes Asociativas involucran tanto a la actividad pre sináptica como a la post sináptica, basados en un principio de aprendizaje descrito por algunos autores, el más conocido, Donald Hebb (1949) en su libro Organization of Behavior con la frase conocida: “Cuando un axón de la célula A esta lo suficientemente cerca para excitar a la célula B y repetida o persistentemente toma parte en su disparo, algún proceso de crecimiento o cambio metabólico toma lugar en una o en ambas células, de tal manera en que la eficiencia de A como disparadora de B, se incrementa”.

Y William James en el texto, Psychology: Briefer Course en 1892: “Cuando dos procesos cerebrales elementales se han activado juntos o en una sucesión inmediata, uno de ellos, al recurrir, tiende a propagar su excitación hacia el otro”.

Científicamente se ha corroborado la aparición del incremento en la eficacia de dos neuronas conectadas, como se muestra en el apartado de aprendizaje y memoria, pero aun no concretamente en circuitos que se activen juntos pero estén separados, por ejemplo se discute el uso de un agente que se difunde rápidamente como un transmisor retrogrado permite hacer un número de sorprendentes predicciones. Por ejemplo, la actividad de una neurona conducente a la liberación de óxido nítrico o a cualquier mensajero difundible, debería causar una potenciación a largo plazo en otras células cercanas aun cuando no estén activas, este resultado fue descubierto por (Schuman & Madison, 1994) donde células en el hipocampo a cientos de micras de distancia mostraban una MLP comunicada aparentemente de esta manera por una célula activa (Anderson, 2007).

Algunas posturas que no están claras en la regla de Hebb son las que implican inhibición, es decir ¿Qué pasa si hay una activación inhibitoria en una de las neuronas? Aunque hay alguna evidencia de que esa anti correlación puede producir el debilitamiento sináptico (depresión a largo plazo), mediante un mecanismo distinto al del NMDA (Cooper & Ebner & Kirkwood & Aizenman & Bear, 1993), no es claro actualmente en qué casos aplica.

Por otro lado, la amplitud de la memoria cambia según la situación, es decir Hay buena evidencia de que aprendemos (memorizamos) poco todo el tiempo y mucho en pocas ocasiones, el mejor ejemplo es el recuerdo de un accidente o que se estaba haciendo mientras ocurría una tragedia en el mundo, se suelen guardar muchos detalles de la una situación, por lo que parece que el tiempo fue más largo, cuando la situación no es demasiado traumática de modo que el estrés no sea muy alto como para evitar la memoria, pero si lo suficiente impactante ocurre un “imprimir ahora” llamado así por R B Livingston(1967) Rockefeller University Press, por la impresión del recuerdo de todos los detalles como un conjunto, algo así como memorice ahora y clasifique después.

Este aprendizaje (el detallado) es el que se asume en la teoría de las RNA sin embargo los sistemas que aprenden continuamente, a menudo tienen grabes problemas matemáticos con la estabilidad, algunos autores han señalado que un mecanismo neural pudiera requerir que se desconectara la recuperación de memorias antiguas para que no interfieran en el aprendizaje de las nuevas.

Con respecto al aprendizaje continuo no existente en la biología de las redes naturales que menciona en su trabajo Anderson, se debe tener en cuenta, para formular otros modelos, esto podría manejarse como una cantidad de atención del sistema, ya que la energía se debe repartir entre los procesos inconscientes y los consientes, y no gastar energía innecesaria, ese ahorro de energía se olvida, cuando se genera un estado del sistema de alarma de alguna de sus entradas, como la sensorial.

  1. La representación de la información

Desde el punto de vista de las RNA la representación de la información se refiere a la codificación inicial para los datos de entrada y a la codificación de la información de la salida en forma de un patrón de múltiples datos o una sola señal de salida y sobre el patrón de actividad de la célula (0,1). “A pesar de las aseveraciones, una representación interna efectiva a menudo no puede ser desarrollada sin una codificación inicial apropiada para los datos de entrada. En general entre más sepamos de los detalles del problema, menor será el aprendizaje que tendrá que realizar la red y será mejor la generalización” (Anderson, 2007), es decir la característica y al tiempo limitación actual de las RNA es apoyarse totalmente en el diseñador para la representación de la información.

El numero y el orden de células que responden a la representación de un evento es otra de las preguntas a las que se enfrentan los diseñadores de RNA, las redes de clasificación y más específicamente las del ganador se lo lleva todo, son un ejemplo de el uso de la célula abuela, es decir una célula especifica corresponde a un concepto, un objeto o cualquier cosa a representar, esta representación tiene las siguientes dificultades:

  • No es biológicamente plausible en un nivel tan específico.
  • La perdida de la unidad representante implica la pérdida total de la información, lo cual solucionan redundando en unidades.
  • El sistema se le dificulta generalizar (relaciones de similitud).
  • El sistema se le dificulta predecir nuevos patrones (clases intermedias).

Los últimos dos puntos se deben a que las representaciones de cosas diferentes son ortogonales, por lo que no hayan un patrón de parentesco entre ellas, una es activa y todas las demás no activas.

Ahora para predecir nuevas situaciones, mediante el mecanismo general de comportamiento de la red es lo que definitivamente no pueden hacer las RNA basadas en células abuela, ya que sería imposible representar un nuevo patrón como un auto gris con células abuela para auto negro y auto blanco.


Ilustración 18 Limitaciones de la propuesta de célula abuela (Anderson, 2007)

También se podría representar la información usando varias salidas y su agrupamiento funcional se puede lograr mediante el promedio de la frecuencia de disparo del grupo, o con una salida como un patrón actividad de salidas (un vector), que pueda representar, algo así como el código ASCII, lo que vendría a ser el comportamiento de una red de redes con entradas y salidas muy complejas.

Elementos básicos de cómputo:

Las neuronas en los modelos de RNA son el elemento básico de cómputo pero biológicamente es probable que la unidad funcional no corresponda con la neurona, es posible que las dendritas actúen como unidad funcional como un dispositivo de integración no lineal independiente, o grupos pequeños cercanos de sinapsis como integradores análogos a las neuronas.

“La evidencia sugiere que las dendritas en algunas de las células grandes, pueden disparar potenciales de acción, como las células cerebrales de Purkinje. Se sabe que algunos invertebrados realizan operaciones independientes en ramificaciones axonales diferentes” (Anderson, 2007, pág. 280).

Arquitecturas de RNA

Hay del orden de 1010-1011 neuronas en el cerebro humano y cada neurona puede tener cientos, miles, en el cerebro pueden haber de 1014 -1015 conexiones en total, lo cual imposibilita la plausibilidad de un modelo conectado totalmente.

Por otro lado es ingenuo tratar de imitar el cerebro sin saber ni por qué, ni como una sola neurona puede llegar a tener desde cientos de contactos, decenas de miles en las células piramidales corticales y 200.000 de las células de Purkinje.

Problemas de la red correlación cascada

Este algoritmo no converge en la totalidad de los casos, ya que en la teoría solo se menciona la adición de nodos y no la forma de conectar esos nodos, aunque entre los problemas con los que el algoritmo demuestra un comportamiento como el del aprendizaje de un niño es la adquisición del Esquema de orden, es decir como ordenar palitos según la longitud (Rocha, 2007).

La supervización

Los patrones entrada salida de una red supervisada se dice que representan el mundo exterior (Mareschal y Shultz, 1996), pero lo cierto es que no existe en el ambiente exterior de un organismo nada que pueda corresponder al output esperado de una red, aunque profundizando en los casos posibles según la comunicación, pueden existir correctores que indiquen aprobación y desaprobación en el caso de los niños o los mamíferos; adicionalmente los organismos puede existir un mecanismo de “neuronas espejo”, de modo que se intenta imitar o recrear los posibles estados internos del otro solo mirando sus salidas, como sus movimientos o sonidos, todas salidas comunes entre ambos organismos, es decir implica un previo reconocimiento de sus salidas como iguales.

En el caso de organismos con comunicación elaborada, se puede establecer directamente patrones entrada/salida a asociar, pero todos son asociaciones de representaciones internas comunes ya existentes en los organismos.

  1. Modelos Artificiales

Evolución de un Sistema

Según lo descrito biológicamente el medio de un sistema artificial debe ser un medio en que pueda interactuar máximamente, se debe establecer desde el principio si el medio de un sistema artificial va a ser uno físico (para un robot) o un lógico (para un software), ya que hay que garantizar que el sistema en el proceso de delimitación del medio aprenda.

Al escoger un medio lógico y sintetizar las características de vida, junto con los aspectos básicos físicos de la evolución como lo son la interiorización del dolor y el placer de modo que permitan el desarrollo de estrategias evolutivas, un sistema artificial debe ser del siguiente modo:

Un caldo de unidades (nodos) que rigiéndose por unas reglas locales se unen y se separan, se dan cuenta de que precisamente al conformar algún patrón (entrada/salida) obtuvieron una ganancia, energía, alimento o satisfacción, entonces empezaron a seguir cumpliendo ese patrón, complicándolo y completándolo en una estructura más compleja al encontrar otros ventajas (de otros patrones o de mejorar la obtención el patrón), en esta búsqueda se genera una barrera como una de esas estrategias para promover el patrón y protegerlo, y encuentran estrategias de obtención de mejora del medio hacia su interior, lo mismo sucede al tiempo para evitar lo que evita o daña la ganancia del sistema.

Luego, para seguir con la definición de agente inteligente, el organismo no siendo único y rodeado de otros organismos usa señales para “tocar” y sentir a los otros, los cuales pueden producirle beneficio formando un principio de la comunicación.

Aprendizaje y Asociación

Por otro lado un modelo que cumpla los mecanismos de aprendizaje encontrados en niños se debe basar en un funcionamiento similar a la asociación natural como en el apartado de “memoria y aprendizaje”, que emerja en circuitos de asociación similares a los que se mostraron en el apartado de “sinergias neuronales” y que este acorde con la generación de niveles de complejidad explicada por Llinás en el apartado “conciencia e interiorización”.

Según los ejemplos de sinergias neuronales se puede evidenciar la importancia de la asociación en procesos elaborados del comportamiento humano, aunque no se muestran las relaciones más complejas con otros muchos factores que afectan una situación de la vida real, esa es la base sobre la cual se puede sostener mucho trabajo en la IA. La asociación es a criterio de los autores del presente documento la base de los sistemas neuronales biológicos, y la mayor asociación que ha logrado el ser humano en su evolución es la metáfora, ya que la metáfora es la asociación de dos conceptos de distintos niveles de abstracción, el mecanismo por el cual el sistema nervioso halla patrones similares mediándose con el lenguaje es el más alto de los niveles de asociación. La posibilidad de hallar patrones entre modalidades o aspectos muy diversos es el principio de creatividad, que en muchos casos como en artistas la diversidad es de aspectos de distintas clases sensoriales.

Modelo asociativo con neurogénesis

Una red asociativa para al aprendizaje debe permitir la adquisición de esquemas, y esquemas por encima de los ya conocidos, también debe poder generalizar en el sentido de identificar (internamente) patrones de patrones, para identificar conceptos más abstractos cada vez y no solo funcionales como los preestablecidos en las entradas. Y para que el modelo sea biológicamente plausible debe ser no supervisado y más bien encontrar una forma de asociar causas-efectos, tal vez mediante la retroalimentación de estados anteriores o circuitos de memoria.

El procedimiento de la adquisición de esquemas se puede plantear desde la perspectiva de la teoría de mentefactos y más ampliamente desde el constructivismo de Piaget, donde el niño primero maneja nociones, luego pasa por otro tipo de modelos mentales, adquiere conceptos y por último las categorías. La idea es que una noción es una instancia de clase (un nodo) y cuando algunos casos no resultan satisfactoriamente clasificados se debe generar una instancia nueva que con el tiempo puede integrar un grupo de instancias que representan el concepto.


Ilustración 19 Neurogénesis en RNA asociativas

La necesidad de una nueva instancia implica la necesidad de una nueva neurona para la clasificación, es una especificación; por otro lado la forma de llegar a generalizar, debe ser mediante un mecanismo de auto organización muy similar al criterio de Kohonen, solo que este criterio debe reconocer otros tipos de patrones internos en la red que no se basen únicamente en similaridad de características sino más bien en similaridad de interacciones internas entre neuronas.

Este reconocimiento de patrones internos debe ser local, de manera análoga a como se producen las asociaciones en el sistema límbico mediante potenciación a largo plazo, que incluya precisamente ese tipo de asociaciones entre estímulos activos al mismo tiempo, pero de una forma más general. Por ejemplo si un niño nunca ha visto a ninguna persona mal humorada gritando y el único ruido amenazante que ha escuchado es de un perro que ladrando, podrá hacer la asociación “ese señor ladró” mediante interacciones locales de asociación como se explica en el apartado de memoria y aprendizaje.


Ilustración 20 principio de asociación metafórica

Esto permite junto con la neurogénesis que emerjan nuevos conceptos como “fluir” o incluso conceptos sinestésicos (que relacionan diferentes estímulos sensoriales) como “un sonido muy brillante”, en concreto posibilita asociaciones más elaboradas, algo como la metáfora que relaciona distintos niveles de abstracción.

Por otro lado la muerte neuronal le permitirá a la red olvidar instancias que nunca más usa, porque eran perceptualmente erradas a menos que factores emocionales no permitan el decaimiento de esa instancia.

Diferenciación de objetos

Para que un sistema requiera diferenciar entre un objeto y otro, se le debe externamente desaprobar su clasificación, como lo haría un maestro o un padre, mediante algún lenguaje, para el caso más elaborado de lenguaje poniendo una palabra a cada cosa diferente; pero si ese no es el caso, el organismo debe identificar un patrón distinto en el objeto, un patrón que no está en las características del objeto sino que el organismo debe poder ver las diferencias en las relaciones con otros objetos, esta característica ha sido estudiada principalmente por la psicología de la Gestalt, e implica la existencia de un mecanismo que asocie internamente esas relaciones entre objetos.

A partir de la psicología de la Gestalt se llega a la asociación entre los objetos y otros patrones ambientales, como que usualmente está colgado del hombro o usualmente está en la espalda, mediante la generación de nodos que representen esa información.



Ilustración 21 Diferenciación mediante psicología de la Gestalt

Para que el organismo haga un análisis de la diferencia de las entradas (el bolso tiene lazo corto y la maleta tiene lazos largos), el organismo tiene que verse sometido a la interacción con el objeto de modo que intente usar la maleta como bolso o el bolso como maleta y sin embargo podría seguir sin diferenciar, es decir además se requiere que identifique la imposibilidad de comportamientos que identifica en otros, (por ejemplo que puede meter objetos en el objeto y verlos al tiempo), o va de nuevo que desde cero asocie el objeto con que puede verlos y el otro objeto similar con que no.

Solución satisfactoria

En términos naturales la explicación de por qué un organismo no está conforme con la solución, es que un 50/50, o un nivel de error alto está asociado a “miedo”, es algo que se debe evitar, ya que lo desconocido es potencialmente peligroso, entonces esa inconformidad está relacionada con la necesidad de asociar lo desconocido a lo desconocido, es posible basarse en las afirmaciones de Llinás sobre la necesidad de predecir de un organismo, es decir si no se encuentra un nivel suficiente de similaridad (error) con la actual representación interna, el organismo no sabe, Por otro lado esa necesidad de conocer explica porque el hombre es un animal curioso por naturaleza.

Con esa insatisfacción natural se evita que un sistema de un resultado incorrecto en vez de dar como salida que no sabe. Sin embargo no es un mecanismo fijo para todos los sistemas, depende de lo el elaborado o simple nivel de organización, poder “saber”, si sabe la respuesta o no, es decir si entiende el problema o no.

Emoción

En un sistema asociativo el nivel emocional puede ser de ayuda para demarcar los casos más importantes para el sistema, como se puede evidenciar en los ejemplos anteriores, las emociones se pueden implementar mediante mecanismos que generen conexiones demasiado demarcadas que difícilmente se puedan dejar de asociar a ciertos significados, como cuando están asociados al dolor, así que la energía del sistema deba volcarse hacia la solución de ese circuito o deba marcar la importancia de unos casos respecto a otros haciendo las veces de la intuición (Gigerenzer, 2008).

  1. DESCRIPCION DEL PROBLEMA DE INVESTIGACIÓN

Las redes neuronales artificiales (RNA) se han diseñado principalmente para aprender a resolver problemas parcialmente definidos o aquellos donde el patrón de organización de los elementos representan el núcleo de la solución, sin embargo las RNA están sujetas al diseño de su arquitectura, ya que del número de neuronas, capas y conexiones con las que cuenta la red, dependen los estados que puede representar.

Normalmente el diseñador de la red es quien decide la arquitectura con la que se va trabajar y después de varias fases de prueba-error puede llegar a encontrar una arquitectura adecuada. Debido a que este proceso representa en algunos casos una labor de alto emprendimiento, se han diseñado RNA capaces de modificar su propia arquitectura; sin embargo, hasta la fecha actual resultan ser muy poco eficientes dado que suponen técnicas de combinación de redes deseadas, o bien, es necesario que partan de una red particular la cual crecerá dependiendo de las condiciones.

La necesidad de una RNA con capacidad de modificar su arquitectura se hace presente cuando se procura que la red se adapte a problemas que no se conocen en un momento determinado, por lo cual
un problema va creciendo a medida que se enfrenta a nuevas variables. Así como en el mercado y en la robótica, por ejemplo, van apareciendo nuevas restricciones y tendencias, así la red DEBERIA adaptarse a esos cambios.

La importancia de la neurogénesis para las RNA se ha evidenciado de otra forma muy importante y es que se ha evidenciado que manejar este concepto implica el desarrollo de modelos más holísticos que permitan manejar la auto organización y que estén basados en nuevas formas de procesamiento local que permitan la comunicación de componentes locales para formar comportamientos emergentes. El mismo proceso de aprendizaje es un proceso emergente, si bien las limitaciones y discriminaciones con las que se desarrollaron los algoritmos de aprendizaje que se manejan en la actualidad permitieron grandes avances en la resolución de problemas; ahora el reto de auto organizar la red implica replantear la forma en que se están diseñando las RNA de hoy.

Hacer uso del conocimiento adquirido en la ingeniería de sistemas y en especial del pensamiento sistémico a través del cual se estudian las reglas locales y la emergencia, proveerá nuevas formas de considerar los modelos de RNA para buscar una mejor alternativa más acorde al modelo biológico por medio del estudio de los nuevos paradigmas neurocientíficos, de programación y de conceptos clave más básicos como la vida y la inteligencia.

Por lo tanto surgieron las siguientes preguntas que requerirán obtener una respuesta, al menos un acercamiento, en este documento:¿Qué herramientas puede utilizar un ingeniero de sistemas para aportar una nueva forma de considerar los modelos de RNA?¿Es posible que sea necesario un nuevo paradigma en la construcción de RNA que implique una limitación para empezar a desarrollar modelos de auto organización más avanzados?¿Es posible mostrar la utilidad que traería este nuevo paradigma para el diseño de RNA por medio de la solución a un problema particular que no esté apoyado en una base biológica como la neurogénesis?¿Puede diseñarse un modelo para una red neuronal artificial, donde el número de neuronas varíe con el fin de que la red se adapte a problemas desconocidos; de tal forma que el rendimiento de la red no se vea drásticamente afectado en la búsqueda de una arquitectura que permita dar solución al problema?¿Pueden los últimos avances en la investigación neurocientífica, dar una pista sobre cómo diseñar éste modelo?

Y al diseñarse este modelo, ¿Cumple las expectativas de un progreso importante en el desarrollo de las RNA? ¿Qué importancia y aplicación tiene este modelo en la práctica organizacional? ¿Qué proceso metodológico se debe seguir desde el punto de vista de la Ingeniería de Software para desarrollar redes neuronales artificiales?

  1. MAPA MENTAL DE LA ESTRUCTURA DEL PROYECTO


Ilustración 22 Mapa mental general del modelo

  1. ANÁLISIS
    1. Metodología de Desarrollo

Inicialmente el interés se encuentra en trabajar metodologías alternativas de desarrollo como las metodologías ágiles ya que este es principalmente un proyecto de investigación y los objetivos no son totalmente claros como para seguir una metodología rigurosa, los criterios e incluso los requerimientos del cliente pueden cambiar durante el desarrollo. Por esta razón se descartan modelos rigurosos y se pone especial atención a las metodologías más flexibles que se ajusten a las fases del modelo prototipado, especial para proyectos con metas difusas y que se deben aclarar durante la marcha (Cockburn, 2001).

La familia Crystal de Alistair Cockburn es de especial interés debido a que se centra en el ser humano por encima de los procesos y los artefactos en el desarrollo de software; es una metodología menos estricta que XP ya que cuenta con mayor flexibilidad en cuanto a la rigurosidad en que se deben seguir las fases de proyecto. Además, Alistair Cockburn es reconocido como un “antropólogo de proyectos” y ha escrito interesantes artículos sobre aspectos del desarrollo de software que lo involucran con el arte y las ciencias sociales (Cockburn, 1997); esta posición propone el desarrollo de software como una sincronía de sistemas biológicos, mecánicos y artificiales para alcanzar un objetivo (el paquete funcional), haciendo que su filosofía sea afín a la filosofía del equipo del proyecto.

Crystal se puede trabajar con diferente rigurosidad dependiendo del número de personas involucradas en el proyecto y de acuerdo a la criticidad del proyecto. En este caso se encuentran 3 personas involucradas en el proyecto (incluyendo al director de tesis) y la criticidad del proyecto es mínima, en tanto que no puede haber pérdida importante de dinero ni mucho menos de vidas; estas características ubican al proyecto de desarrollo en el caso particular de Crystal Clear, que está diseñado específicamente para equipos pequeños y donde no existe un alto riesgo en el desarrollo. Cómo toda metodología define ciertas propiedades, estrategias y roles que se deben tener en cuenta al trabajar bajo sus lineamientos.

Propiedades:

En Crystal Clear se definen 3 propiedades fundamentales para llevar a cabo un proyecto de desarrollo de software (Cockburn, 2002):

  • Entregas frecuentes: Entregar avances funcionales y usables cada 2 a 4 semanas. En el proyecto se hace una reunión
  • Comunicación Osmótica: Se promueven prácticas como el uso de pizarrones para mejorar la comunicación del equipo.
  • Mejoramiento Reflexivo: Reuniones periódicas para que el equipo reflexione y se haga más eficiente.

Además se puede trabajar en:

  • Seguridad Personal: Cada miembro del equipo se debe sentir cómodo con las herramientas de trabajo, la idea del proyecto, los objetivos y en general con el entorno de trabajo.
  • Fácil acceso a usuarios expertos: Procurar que el usuario sea una parte más del equipo. En este caso el usuario se representa como el director de tesis que hace seguimiento al proyecto e incluso los mismos desarrolladores pueden tener un roll de usuario en la validación del software.
  • Foco/Concentración: Metas de corto alcance pero más inmediatas permiten mantener la concentración de lo que se desea.
  • Integración frecuente: No dejar que se desintegren los avances.

Estrategias

En Crystal Clear no se especifican las estrategias, pero se hacen 5 propuestas interesantes que se visualizan en la ilustración. Se hace énfasis en las arquitecturas incrementales y el “esqueleto ambulante” ya que representan el concepto básico de prototipo pues Cockburn define el esqueleto ambulante como un modulo funcional y la rearquitectura reincremental se soporta por el DOO, la cual se verá reflejada en el documento más adelante cuando se presenten los avances por prototipo.


Ilustración 23 Estrategias propuestas en Crystal Clear (Morales, 2007)

Roles

Hay ocho roles principales: Patrocinador, Usuario Experto, Diseñador Principal, Diseñador-Programador, Experto en Negocios, Coordinador, Verificador y Escritor. Dichos roles consisten en:

  1. Patrocinador: Produce la Declaración de Misión con Prioridades de Compromiso. Consigue los recursos y define la totalidad del proyecto.
  2. Usuario Experto: Junto con el Experto en Negocios produce la Lista de Actores-Objetivos y el Archivo de Casos de Uso y Requerimientos. Se familiariza con el uso del sistema y propone formas de uso del mismo.
  3. Diseñador Principal: Produce la Descripción Arquitectónica. Tiene roles de coordinador, arquitecto, mentor y programador más experto.
  4. Diseñador-Programador: Produce junto con el Diseñador Principal los documentos necesarios para la implementación. Cockburn no distingue entre diseñadores y programadores: Los programadores son desarrolladores también, por lo cual no existe el rol de desarrollador que no se involucra con el código.
  5. Experto en Negocios: Debe conocer las reglas y políticas del negocio así como los procedimientos iniciales del proyecto.
  6. Coordinador: Con la ayuda del equipo, produce el Mapa de Proyecto, el Plan de Entrega, el Estado del Proyecto, la Lista de Riesgos, el Plan/Estado de Iteración y la Agenda de Visualización.
  7. Verificador: Produce el Reporte de Bugs.
  8. Escritor. Produce el Manual de Usuario.

En este proyecto se cuenta con 3 personas en total, incluyendo al director de tesis. Los roles indispensables para trabajar con Crystal Clear son aquellos marcados en negrita (Cockburn, 2002); estos roles se cubrieron alternando los tiempos de actividad, en el caso del Coordinador, este surge en las reuniones con el director de tesis. El rol correspondiente a la revisión teórica asociada a la investigación es el de Patrocinador, este rol se compartió en el proceso junto con el de Usuario-Experto y Diseñador principal por parte de los autores.

Ciclo de vida del proyecto

Crystal Clear define ciclos anidados para llevar a cabo el desarrollo de Software, en la mayoría de los proyectos se perciben siete ciclos anidados, desde el más amplio hacia adentro: (1) el proyecto, (2) el ciclo de entrega de una unidad, (3) la iteración, (4) la semana laboral, (5) el período de integración, de 30 minutos a tres días, (6) el día de trabajo y (7) el episodio de desarrollo de una sección de código. La ilustración muestra los ciclos y las actividades que se realizan en cada ciclo, las notación es la siguiente: Definición de proyecto (Chartering), planeamiento de iteración, reunión diaria de pie (standup), desarrollo, check-in, integración, taller de Reflexión, Entrega (Delivery), y empaquetado del proyecto (Wrapup) (Cockburn, 2002).


Ilustración 24 Ciclo de vida de un proyecto de Crystal Clear (Cockburn, 2002)

Se debe diferenciar entre Iteración e Integración: La Iteración se refiere al periodo de tiempo en que el equipo completa una sección del trabajo, integrando el sistema, reportando la salida, haciendo las mejoras reflectivas periódicas y teniendo la certeza emocional de haber completado el trabajo.

La iteración está marcada por objetivos específicos que se deben satisfacer, en principio los objetivos específicos del desarrollo son claros para los servicios que debe prestar una red neuronal: Estimulo y entrenamiento de la red, para cada servicio se debe realizar una entrega. Sin embargo ya que en Crystal Clear se desean entregas frecuentes y existen diferentes modos de entrenamiento de una red: Entrenamiento mono capa ó multicapa, entrenamiento mono patrón ó multipatrón; se definieron prototipos específicos para cada situación. La entrega frecuente de paquetes probados y funcionales (denominados Esqueleto Ambulante en Crystal Clear y Prototipo en el Prototipado) a los clientes reales brinda las ventajas son las siguientes:

  • Los responsables del proyecto obtienen una continua retroalimentación crítica del progreso del equipo.
  • El usuario revisa los requerimientos que tenia y los que tiene ahora para realizar la retroalimentación.
  • Los desarrolladores mantienen su foco de atención, evitando puntos muertos de indecisión.
  • El equipo descubre tempranamente los fallos en su desarrollo y en el proceso que manejan.
  • Se sube la moral cumpliendo plazos cortos y con resultados específicos.

Las entregas frecuentes serán el proceso más notorio del desarrollo y se hará notar que en cada caso se realizaron descubrimientos sobre el real funcionamiento de los algoritmos de RNA y de la misma forma, se hacen sucesivas propuestas para el desarrollo de nuevos modelos basados en la concepción sistémica de la comunicación neuronal.

  1. Definición del proyecto

Se requiere implementar un modelo de neurogénesis para Redes Neuronales Artificiales (RNA) que permita agilizar la fase de Proceso de Entrenamiento, evitando al diseñador tener que probar de forma empírica diferentes combinaciones de arquitecturas internas de red (puesto que es fácil determinar el número de neuronas en la capa de entrada y la de salida) para establecer cuál es la más adecuada.


Ilustración 25 Aplicación del modelo en las fases de implementación de RNA

Para el campo de las neurociencias, el modelo debe corresponder a un estudio sistémico de la comunicación neuronal y de los procesos de aprendizaje de las redes neuronales biológicas ya que se desea realizar investigación con modelos posteriores que permitan implementar formulaciones teóricas de las neurociencias.

En el caso que concierne a la inteligencia artificial, se requiere comparar las características del modelo propuesto con algunos modelos de arquitectura dinámica ya existentes como la red de correlación-cascada y las RNA con algoritmos genéticos para búsqueda de topología de red óptima.

El interés por modelar el sistema dentro de los parámetros del pensamiento sistémico y específicamente el estudio de sistemas emergentes, hace necesario buscar una plataforma ya existente para diseño de RNA que cumpla con criterios básicos de diseño que soporten la simulación de comunicación entre los componentes; o bien, hace necesario diseñar un nuevo modelo desde cero que se ajuste a dichos criterios.

Se desea que la implementación permita al usuario/diseñador: crear, definir parámetros, estimular y entrenar una RNA de forma simple y sin presentar gran cantidad de código, o bien mediante una interfaz gráfica de usuario.

  1. Ingeniería de Requerimientos

Se decide hacer un análisis de casos de uso de trazo grueso según la propuesta de Santiago Ceria (Ceria, 2004), para este caso la identificación de los posibles usuarios se reduce al investigador que usa el software, ya que solo una persona con conocimiento de las RNA puede usar la aplicación. Sin embargo, este usuario puede tener dos roles distintos en los cuales las estrategias que se manejan son diferentes, estas son las de diseño de la red y las de entrenamiento de la red, de las cuales surge el diseñador y el entrenador respectivamente.

Esto se evidencia en las fases de implementación de una RNA donde el diseñador se involucra en la fase de construcción de la red donde se busca establecer principalmente la arquitectura de la red (así como las funciones de transferencia de las neuronas); mientras el entrenador se involucra en la fase de entrenamiento de la red donde se desea establecer el mejor algoritmo de entrenamiento, los mejores pesos iniciales, factor de aprendizaje, valores bias, cantidad máxima de iteraciones, etc. Sin embargo ya que el proceso de entrenamiento requiere modificaciones en la arquitectura ese proceso se realiza recursivamente hasta que se alcanza un diseño y entrenamiento exitoso.


Ilustración 26 Roles de entrenador y diseñador en el proceso

Los servicios generales de una red de acuerdo a un investigador que diseña y entrena una red son los siguientes:

  • Creación de red: El usuario crea una RNA a partir de la creación de neuronas, ubicándolas en diferentes capas (si es necesario) y conectando entre sí las neuronas que desee. Este proceso define la topología de la red que se desea entrenar.
  • Definición de parámetros de red: El usuario define para cada neurona y conexión establecido, la función de transferencia, el valor bias y el peso sináptico respectivamente.
  • Estimulación de red: El usuario define un conjunto de patrones de entrada para la red para obtener la salida correspondiente, en una red entrenada estos datos deben coincidir en un margen de error pequeño, con la salida esperada.
  • Entrenamiento de red: El usuario define el algoritmo de entrenamiento deseado con los parámetros necesarios (factor de aprendizaje, cantidad máxima de iteraciones, error mínimo, etc) y puede revisar la estructura final de la red, así como todas las variables de entrenamiento.

Estos servicios se pueden diferenciar en los roles (de usuario) de la siguiente manera en los casos de uso:


Ilustración 27 Diagramas de casos de uso de trazo grueso

La razón de usar ambos roles permite realizar un mejor prototipado, como se verá en las 7 iteraciones que se desarrollan en la metodología.

  1. Evaluación de necesidades y requerimientos computacionales

El modelo teórico supone una visión sistémica de la comunicación neuronal, a nivel de software el paradigma que más se acerca a esta visión corresponde al paradigma Orientado a Objetos ya que un objeto que se comunica por interfaces con otros objetos y con su entorno supone una aproximación al concepto mismo de sistema, pues puede ser alterado por el entorno y puede a su vez alterar el entorno a través de procesos internos. Por esta razón se definen ciertos criterios que deben ser básicos para la implementación del modelo:

  • Diseño Orientado a Objetos (DOO) que permita formar un modelo distribuido y comunicado por envío de mensajes y eventos, más acorde a la representación de la realidad.
  • Posibilidad de almacenar variables en la red, sinapsis y neurona para representar nuevos estados.
  • Fácil entendimiento de la arquitectura y posibilidad de hacer un seguimiento al aprendizaje de la red.
  • Neurona como unidad elemental para realizar un procesamiento distribuido.
  1. Revisión de Software existente para modelamiento del sistema

Existen diferentes implementaciones en diversos lenguajes para el desarrollo de redes neuronales artificiales, la mayoría de implementaciones se han diseñado con un propósito específico y no de uso general.

Neural Network Toolbox para Matlab


El Neural Network Toolbox es el paquete para desarrollo de RNA en Matlab. Su primer inconveniente en principio radica en que el código no es abierto y no es posible realizar modificaciones al CORE del paquete a menos que se cuente con una autorización del autor. Además de ello no es un DOO y el procesamiento es totalmente matricial, beneficiando la velocidad de procesamiento pero en detrimento del comportamiento deseado para el sistema, por esta razón este paquete es descartado.

Weka


Weka es una interesante herramienta de uso general en el campo de la Inteligencia Artificial que permite realizar árboles de decisión, algoritmos genéticos y el diseño de redes neuronales artificiales a partir de árboles de decisión. Tiene un DOO pero no está orientado a las RNA en particular sino a las herramientas de clasificación y optimización mencionadas, por lo cual el CORE se encuentra acoplado en sus módulos. Un aspecto interesante es que puede integrar nuevos módulos de forma desacoplada y como es una herramienta nueva se espera que sea posible implementar módulos independientes; mientras tanto, es mejor trabajar con un modulo independiente solo para RNA.

JOONE


Ya que para el modelo se deseaba un Diseño Orientado a Objetos se buscó un código abierto en un lenguaje orientado a objetos para extender su funcionalidad implementando el modelo neurogenético; sin duda el CORE más conocido en este ámbito y que mejor hace uso del DOO es el motor neural orientado a objetos de Java o JOONE (Java Object Oriented Neural Engine); el cual es de código abierto para aplicaciones académicas y posee una arquitectura bastante flexible que permite la transportabilidad de los modelos desde entornos distribuidos hasta dispositivos móviles.

En principio la idea más llamativa que se tenía planteada en el anteproyecto, consistía en extender la funcionalidad de JOONE para implementar el modelo neurogenético y tomar partido de sus cualidades ya desarrolladas, sin embargo este proceso se vio truncado por las siguientes circunstancias (Marrone, 2007):

  • JOONE trabaja como objeto elemental la capa neuronal o Layer, en el modelo propuesto se pretende dar prioridad nuevamente a la neurona y al entorno neuronal, por lo cual el algoritmo propuesto requería incluir información a nivel neuronal.
  • La extensibilidad de la clase Teacher solo permite realizar procesamiento en los objetos Synapse que son una matriz que contienen los pesos de todas las conexiones entre una capa y otra. Esto implicaba que si no existía el objeto Neurona se hacía necesario sentar criterios de decisión sobre propiedades sinápticas y no neuronales.
  • Toda la información en JOONE se almacena en arreglos estáticos, por lo cual no es posible modificar la arquitectura de la red en ejecución. En caso de que se sobre escribieran los métodos para trabajar con arreglos dinámicos, se haría necesario cambiar la arquitectura de todo el motor para serializar, procesar, cargar y crear las redes.

Resultado

No se desean herramientas sin DOO debido al modelo sistémico planteado. Se descarta el uso de JOONE para implementar un modelo sistémico que soporte el proceso neurogenético. Se decide entonces implementar un nuevo modelo desde cero escrito en Java debido a ser el lenguaje orientado a objetos más ampliamente difundido.

  1. Herramientas de desarrollo

De acuerdo a un estudio realizado en base a los requerimientos computacionales se definieron herramientas generalmente Open Source y con gran documentación.

Lenguaje de programación


Java es el lenguaje más ampliamente usado en la Programación Orientada a Objetos (POO) que permitirá implementar un código basado en un estudio sistémico del modelo neuronal en la cual los objetos se comunicarán de forma local para estimular o entrenar una red neuronal artificial. Además cuenta con el soporte de Sun Microsystems y abundante documentación en línea.

Entorno de desarrollo


Eclipse es un entorno de desarrollo Open Source muy poderoso para el desarrollo de aplicaciones en Java, el principal beneficio que aporta en este proyecto es la facilidad para generar documentación así como el uso de los plugins que se mencionan a continuación.

Plugins


Jigloo es un plugin libre para uso no comercial que permite realizar diseños de interfaz gráfica de usuario (GUI por sus siglas en inglés) generando el código pertinente. Aunque a veces se critican los editores gráficos por la generación de código basura, al configurar bien estas plataformas no se genera ninguna línea de código que no haya sido precisada en el entorno gráfico.


Omondo es un plugin comercial de Eclipse para modelamiento en UML, su principal ventaja es que genera el código a la par del diseño, puede incluirse documentación y tiene diferentes formas de visualización. Sin embargo, ya que Omondo no es Open Source no se usará para generar el código ya que la aplicación posteriormente estaría limitada por términos legales, se usará entonces exclusivamente para visualizar los diagramas en el documento.

Herramientas de representación


Freemind es una herramienta Open Source escrita en Java para la creación de mapas mentales de forma rápida y sin necesidad de ajuste en la interfaz gráfica. Todos los mapas mentales de este proyecto se han realizado con este Software.


CMapTools es una herramienta con licencia educativa para construir mapas conceptuales de forma elaborada y detallada.

  1. DISEÑO

En el modelamiento del sistema se considera prioridad mantener un estudio basado en el enfoque sistémico, determinar las propiedades, entradas y salidas de los diferentes componentes involucrados en la comunicación neuronal.

  1. Identificación de propiedades de la red

El primer paso para empezar a desarrollar un modelo sistémico se basa en la identificación de propiedades y procesos de la red y de su entorno. Para definir los procesos que se muestran en la primera columna se examinó las propiedades normalmente manejadas en las RNA y el referente principal que se considera es sí estas propiedades y procesos que se manejan en la creación y entrenamiento de una RNA son realmente de donde supone que están siendo manejadas y procesadas.

La siguiente tabla muestra un listado de propiedades básicas de una RNA y se hace una comparación con el modelo biológico para establecer de qué forma estas propiedades y procesos se comparten, así como establecer si la propiedad pertenece realmente a la RNA o al medio o entrenador.

Proceso o propiedad

RNA

Red biológica

Medio y/o entrenador

Adaptar arquitectura En desarrollo Lo hace No le corresponde pero se sigue manejando en la mayoría de RNA
Adaptar pesos sinápticos Lo hace Lo hace No le corresponde
Adaptar valores umbral Lo hace No hay evidencia de que varíe, se establece en -55mv generalmente. No le corresponde
Adaptar función de transferencia A pesar de que las funciones de transferencia son una propiedad de la red, están ligadas a la representación que el usuario desea de la información según los estímulos de entrada y las salidas deseadas. En un estado primitivo la red define múltiples formas de activación. El concepto de función de transferencia no aplica a una red biológica, los diferentes tipos de activación de la neurona podrían empezar a simularse en más detalle con el modelo. Lo hace el entrenador para una RNA, no aplica para redes biológicas
Presentar información a la red (patrones de entrada) No le corresponde No aplica de la misma forma ya que la atención permite al organismo decidir qué información es relevante para el Lo hace
Supervisión (control de las respuestas deseadas – salidas deseadas) Existen RNA supervisadas y no supervisadas, si bien el concepto de supervisión es debatido, las RNA requieren en algunos casos valores de referencia deseados para ser funcionales. Si bien no aplica el concepto de supervisión para las redes biológicas, existe un lineamiento que permite a la red mantener su integridad, una supervisión implícita del medio. Las redes que no aprenden no persisten y son reemplazadas por otras redes hasta que aprendan lo necesario. Lo hace
Intentos de entrenamiento No le corresponde. Aunque en algunos casos redes como la correlación-cascada decide seguir intentando hasta lograr aprender. Un entrenador que pretenda enseñar algo específico a un organismo puede decidir cuantas veces hará el intento. Por ejemplo enseñar a un gato que el plato azul es el de su comida implica una serie de intentos con recompensa y castigo. Lo hace

Tabla 2 Cuadro de procesos y propiedades de las redes neuronales

Esta tabla índica aspectos interesantes, como el hecho de que la arquitectura es una propiedad que pertenece a la red y por lo tanto está definida por la red, que el medio o el entrenador defina la arquitectura es análogo a que este definiendo los valores de los pesos sinápticos e intente obtener una salida deseada. Así como las RNA ya lograron mantener los pesos sinápticos como una propiedad independiente del entrenador, la arquitectura de la red deberá también seguir este camino.

En la identificación de clases del proyecto este cuadro servirá como referencia para identificar las propiedades de las clases y así evitar futuros conflictos en la simulación de redes.

  1. Identificación de propiedades de componentes

En las siguientes ilustraciones se muestra el estudio que se hizo para los elementos más importantes de una red neuronal según la teoría normal de RNA. Es importante tener en cuenta que estas propiedades serán las necesarias para implementar un modelo de RNA y no se mencionarán todas las propiedades que han sido descubiertas por los neurocientíficos; si bien, este trabajo podría significar un avance en el desarrollo de RNA.

Los sistemas trabajados manejan el siguiente formato de presentación:


A partir de la tabla 2 es posible identificar 2 sistemas básicos: La neurona y la sinapsis; si bien la sinapsis no es un sistema como tal sino más un puente de comunicación, la sinapsis es un subsistema de dos neuronas interconectadas que tiene sus propios procesos, entradas salidas y propiedades y por tal razón se incluye como sistema.


Ilustración 28 Sistema neuronal

En rojo se muestran las variables que han sido propuestas para que una neurona artificial se comporte de forma un poco más natural y que son necesarias para implementar el modelo neurogenético. Los procesos de polarización y despolarización inducen a la neurona a estados de activación y en reposo que son los estados básicos de una neurona biológica. El factor de crecimiento nervioso considera la permeabilidad de la neurona y su necesidad de recibir ingredientes del medio para subsistir, los procesos de alimentación y desgaste procesan estos ingredientes y definen un nivel energético que provee a la neurona de cierta resonancia que indica el grado de uso que ha tenido según la hipótesis de activación estudiada.


Ilustración 29 Sistema sináptico

En la sinapsis se propone manejar el factor de aprendizaje variable de manera local de forma análoga a como lo maneja el algoritmo SuperSab y teniendo en cuenta que si el proceso de refuerzo se da en la sinapsis, es allí donde está definido que tanto permitirá variar.

En el modelo artificial los estímulos presinápticos pueden estar dados por señales eléctricas simuladas de una neurona presináptica que se activó o por un valor de error que se propaga. Este último es el que tiene una serie falencia de base biológica, sin embargo se considera debido a ser la forma de entrenamiento de red más común en todos los algoritmos de aprendizaje.

En las RNA se suelen considerar grupos de células como sistemas también, generalmente clasificados en capas, sin embargo la capa es un concepto abstracto más artificial que evidenciado en los sistemas biológicos. Por otro lado las RNA no consideran como sistemas a las glías, a pesar de su importancia en todo el desarrollo y mantenimiento neuronal, primordiales incluso para la neurogénesis como se reviso en los antecedentes biológicos.


Ilustración 30 Sistema célula glíal

Como se presentó en los antecedentes, las células gliales han empezado a ser consideradas importantes para la comunicación neuronal desde solo unas décadas atrás; si bien se han estudiado las glías radiales, oligodendrocitos y astrocitos definiendo de manera parcial que hacen (tal como se mostró en los antecedentes) no se conocen bien las propiedades internas y los procesos que son importantes para dar soporte a las neuronas, por ejemplo que información maneja un astrocito para liberar factor de crecimiento nervioso y promover la neurogénesis. Los avances en este campo han empezado a ser más significativos y se espera que unos años se tenga información más precisa para poder implementar los procesos gliales.

  1. Modelos de procesamiento

En la implementación común de RNA se usa un modelo de procesamiento iterativo basado en el uso de matrices que contienen grupos de información como una matriz de todos los pesos sinápticos entre una capa y otra. Sin embargo, los modelos de programación y en especial el orientado a objetos, permiten también realizar un procesamiento iterativo pero no basado en el uso de matrices, sino por ejemplo, en el envío de mensajes entre objetos de forma más análoga a los procesos neuronales. Ambas formas de procesamiento se estudiarán para determinar la importancia de un cambio en la forma normal de implementar RNA.

Modelo matricial de procesamiento

El proceso matricial es el más común e involucra un recorrido por la matriz de pesos donde se examina el valor de cada peso mientras se procesa un algoritmo que integra los valores (salida*peso); de esta manera la comunicación neuronal se simplifica a un procesamiento de matrices en ciclos iterados que hacen más eficiente el proceso.


Ilustración 31 Representación matricial de RNA

Para calcular la sensitividad, por ejemplo, se amplía la matriz del objeto Capa de tal forma que en la segunda columna se almacena el valor de salida y en la primera el valor de sensitividad. Si se quiere agregar un parámetro adicional a nivel neuronal, como el Factor de Crecimiento Nervioso (FCN) para el caso neurogenético, se puede trabajar otra columna que se actualice de forma algorítmica cuando se procesan estas matrices, de tal forma que el modelo propuesto se puede optimizar para cuestiones de computo por medio de un procesamiento matricial.


Ilustración 32 Propuesta matricial para el modelo

Las propiedades de la red estarían inmersas en variables del algoritmo de entrenamiento y se actualizarían a la par con el FCN de cada neurona. Sin embargo, este modelo no es tan flexible como el modelo distribuido en el cual se pueden realizar nuevas implementaciones para definir tipos de comunicación diferentes, en el caso matricial esto implica un rediseño total del algoritmo de entrenamiento pues todo el procesamiento y la información están centralizados.

Modelo distribuido

En la implementación de la propuesta el procesamiento se realiza de forma distribuida, es decir, por envío de mensajes entre neurona-sinapsis-neurona estableciendo un puente de comunicación por interfaces, lo cual permite incluir nuevas formas de interacción entre la neurona y otros posibles futuros objetos que representen glías o incluso un ambiente neuronal simulado, por ejemplo. En este caso no existe un orden prefijado de comunicación y cada objeto se encarga de notificar sus mensajes, de recibir estímulos y responder ante ellos; el proceso en memoria no es muy diferente al anterior, pero es el diseño de alto nivel lo que permite modificaciones y posibilidades de investigación.


Ilustración 33 Representación en objetos de la comunicación neuronal

En este caso el algoritmo no es un agente externo a la representación física del modelo sino está inmerso en el. De esta manera en el modelo el algoritmo se ejecuta por llamadas a métodos que se encargan en cada caso de realizar el proceso correspondiente usando las variables locales. Los detalles precisos se especificarán en la sección correspondiente al desarrollo del prototipo 1, lo que cabe resaltar aquí es el proceso por el cual se transformaron los algoritmos de forma matricial a procedimientos locales, ya que las ecuaciones presentes en los libros y documentos de RNA siempre aparecen en forma matricial, haciendo necesario un proceso de transformación en la representación de la información para implementar el modelo. Una vez transformadas las ecuaciones matriciales a ecuaciones desarrolladas por cada componente individual, se inicia el proceso iterativo para implementar en el software.

  1. Especificación de neurogénesis

Un modelo de red neuronal artificial donde la neurogénesis juegue un papel importante se debe basar en un estudio filogenético de las redes neuronales, sin embargo dada la incertidumbre de este proceso evolutivo, el modelo se basa en los procesos de génesis en redes neuronales maduras donde juega un papel más importante la adaptabilidad que la determinación genética.

Para desarrollar este concepto de neurogénesis se revisa inicialmente el concepto de supervisión aplicado en RNA`s, ya que el aprendizaje no supervisado sólo consigue resultados útiles si existe cierto patrón de redundancia en los datos de entrada (muy afín con al aprendizaje natural), en muchos casos hay que guiarse por un estimulo representativo de la solución (agradable – desagradable, solución o no) para decidir e incluso para memorizar.

Definición de variables

Se requiere un tipo de red que sea de modo supervisado como los sistemas naturales por una respuesta total del sistema correspondiente a la satisfacción general de la red, por lo que se tiene la variable satisfaccion.

Según la identificación de propiedades de las neuronas se establece que una neurona debe tener un nivel de energía que puede ser representado por la cantidad de factor de crecimiento nervioso (FCN) consumido del medio, el cual queda en la variable factorDeCrecimiento. Este factor simula la forma en que una neurona contrarresta la degeneración asociada a un proceso natural. La asignación de un valor de crecimiento depende de la actividad que tiene la neurona y simula el papel de las células gliales de sostén y regulación del medio químico de las neuronas.

La consecuente capacidad de crecimiento del medio (en términos de neuronas), dada por la insatisfacción del sistema desemboca en un proceso de génesis neuronal.

En cada proceso de aprendizaje el índice de crecimiento disminuye automáticamente representando la degeneración o desgaste natural que sufre la neurona, si la satisfacción de la red aumenta de manera considerable implica que la red puede aprender el patrón deseado y se puede buscar una optimización de su arquitectura por medio de muerte neuronal.

Si se hace necesario el proceso de neurogénesis y soportado por la hipótesis de actividad neuronal, la neurona con mayor consumo de FCN debido a su activación será la neurona que requiera mayor asistencia neuronal en la red y enviará mensajes a la red (por medio de células glíales) notificando que necesita apoyo, a este proceso de notificación se le enmarcará como una resonancia de la célula, en razón a que toda la red puede notificarse de ello y así se creará una nueva neurona.

Esta neurona resonante se verá involucrada en el proceso de neurogénesis dando como referencia a la nueva neurona sus conexiones presinápticas y postsinápticas para que así la neurona recién creada pueda intentar ayudar a solucionar el problema de la neurona resonante (en este caso un patrón de activación que necesita ser delegado en más neuronas).

Ya que la neurona resonante puede ser una interneurona o una neurona efectora (similar a la interiorización del mundo según Llinás) es necesario tener ciertas validaciones, ya que si la nueva neurona que se crea soporta una neurona efectora, será necesario combinar los proceso de ambas para que el resultado efector sea el resultado de su pre procesamiento.

Se define así, que si la neurona resonante no tiene conexiones postsinápticas es necesario crear otra neurona más que represente una simbiosis en la cual las dos neuronas que manejan una construcción de los patrones de activación proyectan su salida en esta última neurona

Diseño preliminar

Según estos parámetros, se propone un algoritmo base para implementar procesos de neurogénesis en una red neuronal artificial cualquiera, teniendo en cuenta sus rasgos generales revisados en las secciones anteriores.

Algoritmo:

Factor de Crecimiento Nervioso (FCN) de todas las neuronas se inicializa.

Mientras red no clasifique correctamente los patrones {

    Satisfacción = valorDeUsuario;

    Mientras itera todos los patrones de entrada {

Estimular la red con patrón de entrada actual

Cada neurona consume el FCN en el estimulo.

Obtener el error

Actualizar los pesos con regla Hebbiana // Redes multicapa con Backpropagation

} Fin Mientras

Si error de la red aumentó {

    Satisfacción = satisfacción/2;

}

    Si Satisfacción 0 {

        Neurogénesis. // Implementado en algoritmo propuesto

        Sinaptogénesis. // Desarrollo para versiones futuras

    }

    Muerte Neuronal    // Detalle teórico de su aplicación al modelo propuesto

} Fin Mientras

El proceso de sinaptogénesis se debe realizar con métodos existentes (Lebiere & Fahlman, 1990) pues aún no se ha definido las condiciones de las variables planteadas para crear una conexión.

Ejemplo de aplicación

A continuación se presenta el típico problema del perceptrón con 1 neurona que vanamente intenta aprender el patrón de la función XOR, necesitando de más neuronas si quiere clasificarla. El sistema no se limita a “no pude” ó “si pude encontrar la solución”, sino que busca la solución más aproximada ó que abarque más patrones solución. De esta manera, se empieza con una neurona inicial denominada A la cual intenta aprender el patrón de la mejor forma posible. Los datos necesarios para entrenar el XOR son:

P1

T1 =0; P2

T2 =1; P3

T3 =1; P4

T4 =0

Acorde al algoritmo presentado se sigue el proceso normal de entrenamiento, salvo que se va guardando en cada caso el estado para el que la neurona (la red en el caso genérico) haya clasificado correctamente el mayor número de patrones. En cada época, cada vez que la red clasifique mal los patrones, disminuye su índice de satisfacción y aumenta el índice de crecimiento de la neurona con mayor activación.


Ilustración 34 Solución aproximada de neurona A para XOR

La neurona A alcanza una solución aproximada pero el sistema aún se muestra insatisfecho y hay una neurona (la única que hay en este caso) con un índice de crecimiento alto. Esto provoca que se manifieste el proceso de neurogénesis donde se crea la neurona B, la cual adquiere los parámetros de entrada y de salida de la neurona que asiste (neurona A), de esta forma atiende el mismo problema que A pero con prioridad en el patrón faltante que en este caso es P3.


Ilustración 35 Solución aproximada de neurona B para XOR

Además de la asociación, la manera en la que se conectan las neuronas después de la neurogénesis, se da por la necesidad de solucionar los patrones de entrada de la neurona B complementaria y combinar su solución con la obtenida por A; así encuentran una forma de simbiotizarse a partir del patrón de respuesta del sistema; este proceso está respaldado por la hipótesis de la actividad neuronal.

Es decir del patrón inicial Pn produce un patrón de salida en A y en B que debe corresponder al patrón de salida inicial Tnewn = Tn, Así:

P1
= Pnew1

T1=0; P2 = Pnew2
T2=1;

P3 = Pnew3
T3=1; P4 = Pnew4
T4=0.


Ilustración 36 Red final para neurogénesis de XOR

Si la síntesis no satisface, se repite el proceso de neurogénesis de identificación y simbiosis, hasta que la red, una vez aprendido el patrón, queda satisfecha y termina el algoritmo de adaptación.

  1. Resultados

El modelo se debe evaluar si es aplicable a un software ya existente, de tal forma que una vez decididos los detalles de implementación se procederá a realizar un análisis más detallado donde se expondrá el algoritmo asociado. Ya que este aspecto todavía no se ha definido se hace un proceso de prototipado para ir estableciendo de manera precisa los objetivos y el procedimiento a seguir.

  1. PROTOTIPADO

Se pretende seguir el desarrollo establecido en Crystal Clear, la siguiente ilustración muestra los pasos definidos por Cockburn mostrados en la ilustración “Ciclo de vida de un proyecto en Crystal Clear” y contrastados con la información que se presentará en cada una de las iteraciones. La letra en rojo muestra la forma en la que aparecerá la información en las iteraciones, indicando de qué fase, según la metodología, se generó ese tipo de información.

Como se observa inicialmente, para este caso concreto se definió que en cada iteración se debe hacer una entrega, ya que se pueden marcar objetivos pequeños y llegar a una solución por prototipos funcionales. El primer prototipo corresponde al esqueleto ambulante definido en Crystal Clear y es el primer modulo funcional sobre el cual se implementan todos los servicios posteriores.


Ilustración 37 Descripción de la estructura iterativa manejada en el documento

En el planeamiento de la iteración se describirá el objetivo y la funcionalidad que se desea del sistema, estableciendo así la dirección en la que se debe encaminar todo el modelamiento y desarrollo, descrito en sus apartados. Por último, el check-in que se hace durante el desarrollo se lleva en un documento alterno y se recopila al final de la iteración en un documento de observaciones que contiene las ventajas, desventajas y detalles importantes del funcionamiento del algoritmo que sean dignos mencionar.

  1. Iteración 1 – Creación de una red

Objetivo:

Desarrollar un modelo que permita crear una RNA de manera que sea posible identificar las conexiones entre neuronas así como identificar las neuronas de salida y de entrada.

Funcionalidad:

Creación de una red: Se crean las neuronas y se conectan entre sí formando cualquier arquitectura deseada por el usuario.

Modelamiento:

El modelo más básico de creación de objetos está dado por el diagrama de clases mostrado en la página siguiente. Como es evidente, su diseño es tan simple que no parece traer beneficio alguno al diseño de RNA, sin embargo en la siguiente iteración se evidencia como un modelo de comunicación ya permite establecer interfaces de comunicación que no sólo hacen más óptimo y transparente el diseño de objetos, sino que da nuevas posibilidades en los modelos de RNA.


Ilustración 38 Diagrama de clases para creación de red

Ventajas

El usuario puede crear una red de forma detallada comprendiendo la estructura de la red.

Desventajas

  • Para redes grandes es un trabajo tedioso crear neurona por neurona y conectar cada una de ellas con objetos de sinapsis independientes con los que tiene que lidiar el diseñador.

    Solución: En la iteración 3 se desarrollaron mecanismos para crear una red de forma rápida a partir de capas, también se implemento un método para conectar toda la red con una sola llamada a método que permite establecer pesos aleatorios entre [-x, x], siendo x definido por el usuario. No obstante sigue siendo posible crear la red de manera detallada.

  • El modelo esta acoplado pues las neuronas tienen referencia con la sinapsis y esta con las sinapsis.

    Solución: Al comprender qué tipo de información se requiere de las sinapsis y de la neurona se pueden establecer interfaces de comunicación para que solo se envíe la información necesaria. Esta solución se implementa en el esqueleto ambulante en la siguiente iteración.

  1. Iteración 2 – Esqueleto ambulante de RNA

Objetivo:

Desarrollar un modelo que permita estimular una RNA bajo los criterios establecidos en los requerimientos computacionales. Definición de propiedades y medios de comunicación entre neuronas.

Funcionalidad:

Estimular una red con un conjunto de patrones en formato de arreglo y obtener la salida de la red para cada patrón. Por ejemplo se desea saber la salida de la red para las combinaciones de una función lógica establecida, de esta forma el patrón debe encontrarse en el formato {{0, 0}, {0, 1}, {1, 0}, {1, 1}} y la salida de la red se mostrara en consola de la forma:

Patrón: {0, 0}

Salida: {0.7584}

Patrón: {0, 1}

Salida: {0.8100}


En esta fase no se requiere salida deseada.

Modelamiento básico de comunicación neuronal

Se implementaron métodos para envío de mensajes entre neuronas, la sinapsis es el objeto puente entre las neuronas y se encarga de efectuar operaciones sobre el peso sináptico, como el refuerzo. Para evitar acoplar el objeto Neurona con el objeto Sinapsis ya que se necesita de una referencia bidireccional de comunicación, se estableció la interfaz EscuchaNeuronaPresináptica y la clase EventoNeuronaPresináptica para establecer una comunicación no acoplada entre las neuronas, más adelante se detalla este aspecto sólo posible en el DOO.

El objeto Neurona define la propiedad básica para su activación: la polarización. Una neurona biológica se activa dependiendo de su nivel polarización, si esta alcanza cierto nivel, se activa. La operación básica que contribuye a que una neurona se active es el estimulo de señales entrantes, la cual queda representada en el método público estimular(double estimulo).


Ilustración 39 Diagrama de comunicación neuronal

La forma de comunicación entre neuronas biológicas se da principalmente por medio de una secuencia: estimulo-activación-estimulo; que es posible gracias a la sinapsis (el canal de comunicación). El objeto Sinapsis se encarga de obtener la salida de la neurona presináptica, amplificarla con el peso sináptico correspondiente y enviar esta señal a la neurona postsináptica; esto implica que tanto la neurona como la sinapsis deben tener una referencia bidireccional para lograr comunicarse. Por ello se implementa al objeto Sinapsis como una interfaz de EscuchaNeuronaPresináptica de tal forma que el objeto Neurona no puede llegar a tener conocimiento de otro objeto Neurona, sino que solo notifica al medio los cambios en su estado (en este caso a la sinapsis).


Ilustración 40 Secuencia de activación

La representación de este modelo en el diagrama de clases según la notación UML estándar muestra la forma en que la Neurona y la Sinapsis se encuentran referenciadas mutuamente.


Ilustración 41 Diagrama de clases Esqueleto Ambulante

La forma de comunicación con la sinapsis es por medio de interfaz, de modo que la neurona solo puede invocar el método neuronaSeActivo(), siendo la única información que recibe por ahora la Sinapsis de la neurona. Si se desea que la sinapsis reciba más información de la neurona simplemente se debe agregar un método adicional a la interfaz de escucha. Por ejemplo, un investigador puede querer simular el comportamiento neuronal teniendo en cuenta el campo electromagnético generado (según la teoría de la conciencia de McFadden expuesta en los antecedentes) y así, cuando las neuronas adyacentes se activan el campo electromagnético de la neurona actual cambiará; de esta forma puede definir un método campoElectromagneticoCambio() que notifique el cambio a la sinapsis para que está realice un proceso correspondiente.

Además de ello, el investigador puede querer probar diferentes tipos de activación neuronal, con la clase EventoNeurona puede definir tipos de activación específicos como el tren de impulsos o incluso simular el envío de un neurotransmisor específico; de esta manera la sinapsis responderá ante el evento que envíe la neurona.

Ventajas:

Modelo distribuido en procesamiento y almacenamiento de información, alta cohesión y bajo acoplamiento (a pesar de la necesidad del flujo de información), las características fundamentales son las siguientes:

  • El hecho de implementar la clase Neurona no sólo corroboró la importancia de utilizar este objeto como la unidad elemental de comunicación, sino que además permitió visualizar nuevas posibilidades en el ámbito computacional y que no han sido estudiadas en el campo neurocientífico debido a que no existe un modelo que busque implementar la comunicación neuronal basado en el pensamiento y modelamiento sistémico (o al menos no que se conozca).
  • Trabajar a nivel neuronal permite una distribución de la información y del procesamiento más acorde al modelo biológico, colaborando con la intención de acercarse nuevamente a un modelo bioinspirado.
  • El DOO permite trabajar los objetos de forma coherente a cómo trabaja el sistema real, por ejemplo el método activar() al ser privado, solo puede ser invocado por la misma neurona, de esta forma es la neurona la que decide de acuerdo a las perturbaciones que recibe del medio (simuladas por el método estimular()) si se activa o no y en qué momento lo hace. No hay forma de hacer activar un objeto neurona directamente, a menos que sea por estímulos, de la misma forma a como sucede con una neurona real.
  • La clase Sinapsis no es una matriz de pesos que se procesa entre capas, sino que se implementa entre cada par de neuronas y cumple el papel de comunicador neuronal. Esta posibilidad de implementar una sinapsis entre cada par de neuronas conectadas colabora con el principio de distribución del procesamiento planteado.
  • Debido a que los componentes de comunicación se trabajan como objetos, es posible extender la funcionalidad para implementar propiedades particulares, por ejemplo es posible manejar de forma local el factor de aprendizaje en cada neurona (de tal forma que cada neurona tiene un factor de aprendizaje distinto) y así mismo implementar métodos para la variación de ese factor dependiendo de la tendencia del error de esa neurona particular y no de una aproximación del error total de la red.
  • Implementar los algoritmos de ejecución y aprendizaje basados en la comunicación y envío de mensajes locales, tal como fueron diseñados originalmente; y no en el procesamiento de matrices que representa una generalización del modelo de aprendizaje.
  • Usar interfaces de comunicación entre las neuronas que permiten establecer una arquitectura más robusta, eficiente y flexible, permitiendo a un investigador implementar sus propios modelos de comunicación neuronal.

Desventajas:

  • Hay una creación de objetos mucho mayor que en cualquier otro modelo, por ejemplo JOONE. Esto podría suponer un retardo en tiempo de procesamiento muy significativo que haga al modelo inviable desde el punto de vista computacional para redes mayores.

Solución: Se realizaron pruebas de rendimiento de la red con respecto a JOONE que es el modelo orientado a objetos más parecido en cuanto arquitectura. Los resultados detallados se muestran en la sección Observaciones de la investigación pero cabe anotar que el rendimiento superó las expectativas siendo en promedio unas 2.4 veces más rápido que para el caso de JOONE. Esto se debe principalmente a que la mayoría de objetos que se crean se usan por interfaz, acelerando el proceso.

  1. Iteración 3 – Prototipo 1 con aprendizaje Perceptrón

Objetivo:

Entrenar una red de 2 capas usando el algoritmo de Perceptrón simple para actualización de pesos.

Funcionalidad:

El usuario puede entrenar una red de dos capas máximo para que aprenda el conjunto de patrones dado, las funciones de transferencia que puede usar son: Logarítmica Sigmoidal, Tangencial Sigmoidal, Escalón y Lineal. Redes multicapa no están soportadas por este algoritmo.

Modelamiento:

El proceso básico de comunicación es el mismo, solo que ahora Sinapsis implementa una nueva interfaz EscuchaNeuronaPostsináptica que presta el

servicio de notificar la neurona presináptica con el error de la red. La clase Perceptron con referencia a la red, se encarga del proceso de aprendizaje y la red en sí, sólo es estimulada y retorna una salida; el aprendizaje es también local.


Ilustración 42 Diagrama de clases Prototipo 1

Implementación:

Se agrega la clase Perceptron, encargada de entrenar la red e implementar métodos para realizar un proceso lineal. Debido a que se deben realizar notificaciones de error e invocar funciones de transferencia de manera lineal se hizo necesario agregar la clase Capa, encargada de coordinar el procesamiento de los objetos Neurona. Un modelo basado en la realidad no debería implementar de forma estricta un objeto Capa, ya que este es una representación de conjuntos de células, pero no debería determinar el procesamiento, tal como se ha hecho en los algoritmos computacionales.

Lo más relevante en este proceso es que se hace necesario que una neurona pueda comunicarse con sus neuronas presinápticas, proceso que biológicamente no ocurre, pero que se hace necesario en los algoritmos de entrenamiento por retro propagación, que son los más conocidos y usados actualmente (de hecho en nuestra investigación no encontramos algoritmos de entrenamiento multicapa que no usaran la retro propagación). El proceso que se usó para comunicación es análogo al que se realizó en el Prototipo 1, añadiendo la interfaz EscuchaNeuronaPostsináptica y el evento EventoNeuronaPostsináptica.

Ventajas y optimizaciones:

  • El aprendizaje se distribuye por la red, el algoritmo esta descentralizado y la comunicación se hace por medio de interfaces y de eventos.
  • Se usa el entrenamiento en línea, de tal forma que se van presentando los patrones a la red y esta realiza la corrección inmediatamente, las ventajas de este entrenamiento como ya se mencionó, es que su velocidad de convergencia puede ser más rápida y además resulta más acorde al modelo biológico.
  • Se agrega el método reposar() en el objeto Neurona, el cual es invocado después de que la neurona se ha activado. Este método permite trabajar tiempos de reposo que podrían manejarse en multiproceso para investigar los efectos del tiempo de retardo de las neuronas biológicas, el cual se sabe que es elevado y durante el cual no se activarán, no importa los estímulos que reciba. A través del reposo podrían llegar a manejarse grupos de neuronas resonantes, que se activen al mismo tiempo dependiendo de en qué momento un grupo de neuronas están listas para ser activadas nuevamente, estas posibilidades son muy interesantes en la neurociencia tal como se mencionó en los antecedentes, donde una sinapsis tripartita podría ser sincronizada de esta forma, siendo una glía el objeto que controle el tiempo de reposo de una neurona mientras espera la activación de otra.
  • Se mejora la presentación de patrones a la red definida en el esqueleto ambulante como arreglos bidimensionales de tipo:

    double[][] patrones = {{0, 0}, {0, 0}, {0, 0}, {0, 0}};

    double[][] salidasDeseadas = {{0}, {1}, {1}, {1}};

    Se establece un manejador de archivos que accede a un documento de texto plano con la información de patrones y salidas y se accede de la siguiente forma:

    Lector lector = new LectorDeArchivo();

    lector.obtenerDatosDelArchivo(new File(this.getClass().getResource(“OR.txt”).getPath()));

    double[][] patrones = lector.getPatrones();

    double[][] salidaDeseada = lector.getSalidasDeseadas();

    Donde el archivo presenta el siguiente formato:


Ilustración 43 Formato para archivos con datos de entrenamiento

Donde:

@ define el número de patrones de entrada. 2 para el caso {0, 0}, {0, 1}…

# define el número de salidas deseadas. 1 para el caso {0}, {1}…

& define la cantidad de patrones de entrenamiento que se desean entrenar. En este caso los 4, para tablas de predicción se debe usar el 80% de los datos para entrenamiento y el 20% restante para validación.

Esto permite al usuario, hacer uso de ejemplos ya establecidos con grandes cantidades de datos y simplemente importarlos desde el archivo que posee, agregando las 3 líneas de formato requerido.

Desventajas:

El entrenamiento en línea presenta los patrones siempre en el mismo orden. No se ha implementado un método para que vaya cambiando el orden de aparición de los patrones, a medida que se presentan a la red.

Solución: Un método para cambiar el orden de los patrones por cada época de entrenamiento. En la versión actual el método no está implementado todavía.

  1. Iteración 4 – Prototipo 2 con aprendizaje Backpropagation

Objetivo:

Entrenamiento de una red multicapa con el algoritmo Backpropagation debido a que es el más usado y exitoso a nivel mundial; por ende el algoritmo propuesto debería funcionar con, al menos, este algoritmo de aprendizaje. La red debe ser también capaz de entrenar múltiples patrones con múltiples entradas y salidas deseadas.

Funcionalidad:

Aprendizaje de una red multicapa con múltiples patrones. Se determinaron diferentes mecanismos de optimización que podían ser implementados en versiones futuras.

Modelamiento:


Ilustración 44 Diagrama de clases Prototipo 2

Para el proceso de retro propagación se hizo necesario usar la interfaz EscuchaNeuronaPostsináptica, de tal forma que cada Sinapsis es notificada cuando se retro propaga la sensitividad, notificando a su vez a la neurona presináptica para que vaya calculando su valor de sensitividad. El proceso se hace desde la última capa hacia la primera capa.

Implementación:

Se agrega la clase abstracta Entrenador y la clase Backpropagation. El modulo se rediseña para que se puedan establecer diferentes tipos de Entrenadores de tal forma que solo se debe extender la funcionalidad de Entrenador para implementar un algoritmo concreto.

Ventajas:

Al igual que el estimulo de la red, la retro propagación se realiza de manera distribuida por cada neurona que calcula su sensitividad (proceso local); y luego notifica a cada neurona presináptica ese valor.

Desventajas y problemas que persisten en la búsqueda de un algoritmo de procesamiento local:

  • El uso de un objeto Capa que coordine el proceso de todas las neuronas. En el proceso del modelo inicial se usa un criterio de activación basado en el umbral donde las neuronas sensoras se activaban y luego cada neurona postsináptica enviaba un evento de activación solo si se activaba, lo cual permitía comunicar la red por eventos de activación; el algoritmo Backpropagation no permite tener un criterio de activación basado en el umbral que permita establecer cuando la neurona se activa o no (ya que implicaría el uso de una función escalón: discontinua y por lo tanto no derivable), por lo que la neurona debe esperar a que todas sus entradas sean procesadas para finalmente aplicar la función de transferencia.

    Solución: En un proceso en paralelo el uso de capas no es necesario y sería posible implementar el modelo inicial manteniendo la independencia de capas de procesamiento o de una iteración secuencial por neuronas de un mismo nivel (como en el caso matricial).

  1. Iteración 5 – Prototipo 3 con neurogénesis

Objetivo:

Implementar el algoritmo propuesto para ejecutar la neurogénesis cuando la red ya no pueda solucionar el problema con la arquitectura actual.

Funcionalidad:

La red debe adaptar su arquitectura para intentar solucionar el problema. De acuerdo a los parámetros dados por el usuario en cuanto a cantidad máxima de iteraciones, la red debe ser capaz de crear tantas neuronas en distintos niveles (capas) como sea necesario para reducir el error de aprendizaje.

Modelamiento:

Para no acoplar el modelo con el algoritmo neurogenético se definió una nueva clase neurona denominada NeuronaAsistible en razón a que en el proceso de neurogénesis el planteamiento del modelo es que la neurona creada asiste a una neurona con necesidad de ser asistida (o apoyada). Esta clase extiende, como es natural, la clase Neurona pero reescribe algunos de sus métodos para actualizar las variables requeridas en el proceso, como el factor de crecimiento nervioso.

Además de ello se declara un nuevo tipo de red denominada RedNeurogenetica encargada de realizar los procesos de génesis; como es natural también, esta clase extiende a RedNeuronal para usar los servicios asociados. El diagrama se muestra a continuación:


Ilustración 45 Diagrama de clases prototipo 3

Además de ello la red debe escuchar el proceso de entrenamiento, ya que se debe basar en cuantas veces ha intentado aprender para decidir si es necesario crear nuevas neuronas o no (basándose en como varia el error, si disminuye o si aumenta, que se traduce a: si va por buen camino o no). Por ello la clase RedNeurogenética implementa la interfaz EscuchaEntrenamiento para ser notificada en cada caso de la situación actual de su aprendizaje, es algo parecido a como si el entrenador le dijera “lo estás haciendo mejor” o “estas empeorando”.

La representación en código de lo propuesto, teniendo en cuenta el modelamiento teórico que se hizo para el desarrollo de neurogénesis es la siguiente para la Neurona.

public
class NeuronaAsistible extends Neurona{


private
double
factorDeCrecimientoNervioso = 0.0;

public NeuronaAsistible(FuncionDeTransferencia funcion, double bias) {

    super(funcion, bias);

}

@Override

public
double calcularFuncionDeTransferencia() {


double salida = super.calcularFuncionDeTransferencia();


// la salida se puede normalizar para que todas se manejen de la misma forma


factorDeCrecimientoNervioso += salida;


if (RedNeurogenetica.neuronaResonante == null) {

    RedNeurogenetica.neuronaResonante = this;

}else
if(factorDeCrecimientoNervioso > Red.neuronaResonante.getFactorDeCrecimientoNervioso()) {

    RedNeurogenetica.neuronaResonante = this;

}

RedNeurogenetica.factorDeCrecimientoNervioso -= salida;


return salida;

}


}

Para la red, es el siguiente:

public
class RedNeurogenetica extends RedNeuronal implements EscuchaEntrenamiento {


public
static
double
factorDeCrecimientoNervioso;


public
static NeuronaAsistible neuronaResonante;


// nunca realizará neurogénesis a menos que el usuario defina un nuevo valor


private
double
satisfaccion = 1;


private
double
ultimoError;


boolean
errorAumentando = false;


@Override


public
void cicloTermino(EventoEntrenamiento eventoEntrenamiento) {


double errorMCDeLaRed = eventoEntrenamiento.getErrorMCDeLaRed();


if(errorMCDeLaRed > ultimoError){

    errorAumentando = true;


satisfaccion = satisfaccion/2;

}else{

    errorAumentando = false;

}


if(satisfaccion < 1E-20 && errorAumentando){

    asistirNeuronaResonante();

    satisfaccion = 0.8;

    errorAumentando = true;

}


ultimoError = errorMCDeLaRed;

}


@Override


public
void entrenamientoInicio(EventoEntrenamiento eventoEntrenamiento) { }


@Override


public
void entrenamientoTermino(EventoEntrenamiento eventoEntrenamiento) { }


public
void asistirNeuronaResonante() {


//evaluar validez del valor bias que se está asignando.

NeuronaAsistible nuevaNeurona = new NeuronaAsistible(neuronaResonante.getFuncionDeTransferencia(), Math.random()-Math.random());

Iterator<EscuchaNeuronaPresinaptica> iteradorEscuchasPre = neuronaResonante.getConexionesPostsinapticas().iterator();


while (iteradorEscuchasPre.hasNext()) {

    EscuchaNeuronaPresinaptica escuchaNeuronaPresinaptica = (EscuchaNeuronaPresinaptica) iteradorEscuchasPre.next();

    if(escuchaNeuronaPresinaptica instanceof Sinapsis){

        // Investigar criterios para generación de nuevos pesos. Qué pesos resultan convenientes?

        nuevaNeurona.conectarNeuronaCon(((Sinapsis)escuchaNeuronaPresinaptica).getNeuronaPostsinaptica(),

                Math.random()-Math.random());

    }

}

Iterator<EscuchaNeuronaPostsinaptica> iteradorEscuchasPost = neuronaResonante.getConexionesPresinapticas().iterator();


while (iteradorEscuchasPost.hasNext()) {

    EscuchaNeuronaPostsinaptica escuchaNeuronaPresinaptica = (EscuchaNeuronaPostsinaptica) iteradorEscuchasPost.next();

    if(escuchaNeuronaPresinaptica instanceof Sinapsis){

        // Investigar criterios para generación de nuevos pesos. Qué pesos resultan convenientes?

        ((Sinapsis)escuchaNeuronaPresinaptica).getNeuronaPresinaptica().conectarNeuronaCon(nuevaNeurona, Math.random ());

    }

}


//buscar capa de Neurona a clonar, en la misma capa de neurona resonante.

Capa capaDeNuevaNeurona = null;

Iterator<Capa> iteradorCapas = super.getCapas().iterator();


while (iteradorCapas.hasNext()) {

    Capa capa = (Capa) iteradorCapas.next();

    Iterator<Neurona> iteradorNeuronas = capa.getNeuronas().iterator();

    while (iteradorNeuronas.hasNext()) {

        Neurona neurona = (Neurona) iteradorNeuronas.next();

        if(neurona.equals(neuronaResonante)){

            capaDeNuevaNeurona = capa;

            break;

        }

    }

}

capaDeNuevaNeurona.agregarNeurona(nuevaNeurona);

NeuronaAsistible neuronaSimbiosis = null;


//Sí no existe una conexión postsinaptica. Se crea una nueva neurona para representar la salida.


if(neuronaResonante.getConexionesPostsinapticas().size() == 0){

    neuronaSimbiosis = new NeuronaAsistible(neuronaResonante.getFuncionDeTransferencia(), Math.random()-Math.random());


    /**
representa
la
transición
de
las
neuronas
a
una
capa
interior
*/


    neuronaResonante.conectarNeuronaCon(neuronaSimbiosis, Math.random()-Math.random());

    nuevaNeurona.conectarNeuronaCon(neuronaSimbiosis, Math.random()-Math.random());


    // encuentra la posicion de la neurona asistida para ubicar la nueva neurona en el mismo lugar y no distorsionar la salida

    Iterator<Neurona> neuronas = capaDeNuevaNeurona.getNeuronas().iterator();

    int posicionNeuronaResonante = 0;

    while (neuronas.hasNext()) {

        Neurona neurona = (Neurona) neuronas.next();

        if(neurona.equals(neuronaResonante)){

            break;

        }

        posicionNeuronaResonante++;

    }

    capaDeNuevaNeurona.getNeuronas().remove(neuronaResonante);

    capaDeNuevaNeurona.getNeuronas().remove(nuevaNeurona);

    capaDeNuevaNeurona.getNeuronas().add(posicionNeuronaResonante, neuronaSimbiosis);


    //iterar las capas para identificar la capa en la que se deben posicionar las neuronas asistidas.

    iteradorCapas = super.getCapas().iterator();

    Capa ultimaCapaIterada = null;


    while (iteradorCapas.hasNext()) {

        Capa capa = (Capa) iteradorCapas.next();

        if(capa == capaDeNuevaNeurona){

            break;

        }

        ultimaCapaIterada = capa;

    }


    // sí hay una capa anterior y no es la capa de entrada

    if(ultimaCapaIterada != null && ultimaCapaIterada != getCapa(0)){

        ultimaCapaIterada.agregarNeurona(neuronaResonante);

        ultimaCapaIterada.agregarNeurona(nuevaNeurona);

    }else{

        agregarCapa(new Capa(neuronaResonante, nuevaNeurona), TipoDeCapa.OCULTA);

        mostrarDiseñoDeRed();

    }


    /**
fin
de
representación
*/


}

}

El código mostrado maneja el proceso esencial para la neurogénesis, a continuación se muestra el mismo ejemplo de aplicación para la función XOR que no puede ser aprendida por una red con 2 neuronas de entrada, una de salida y sin neuronas ocultas.

En la aplicación se crea la red activando la casilla para que la red implemente el algoritmo de neurogénesis; si la red no valida esta casilla no se realizará ningún proceso de neurogénesis. Se crea la red de 2 neuronas en la capa de entrada y una neurona con función sigmoidal en la capa de salida (recuérdese que si las salidas son bipolares es necesario usar una función de transferencia que conlleve a salidas bipolares o el entrenamiento será infructuoso incluso para la función OR).

La red creada es la siguiente:


Ilustración 46 Red sin neuronas ocultas que intenta solucionar XOR

Si no estuviera activa la neurogénesis y se entrena la red con el archivo XOR, el aprendizaje nunca será fructuoso, se muestra una salida común que se queda estancada en un mínimo local (siendo el mínimo global inalcanzable para esta configuración de red).

Como se ve la red no está ni siquiera cerca de poder llegar a una solución favorable incluso para 5000 intentos, si después de varias pruebas se verifica esto después de asignar diferentes pesos iniciales, puede significar que es necesario un cambio en la arquitectura, en este caso la red siempre intenta dejar los pesos de tal forma que la salida de la red para todos los casos es aproximadamente 0.5, ya que sería el mínimo del error que puede alcanzar.


Ilustración 47 Respuesta de red sin neuronas ocultas a XOR

Por lo anterior, se hace evidente que es necesario activar la casilla de validación para realizar neurogénesis, la salida de la red en este caso será la siguiente:


Ilustración 48 Respuesta y modificación con neurogénesis

Se evidencia que el proceso de neurogénesis da resultado. Para este caso el usuario debe definir un parámetro adicional que controlará la propensión de la red para realizar neurogénesis, este parámetro es la insatisfacción máxima de la red.


Ilustración 49 Parámetro adicional para controlar neurogénesis

Este parámetro controla el grado en que se realiza la neurogénesis ya que es el punto de validación a partir del cual la red decide crear una nueva neurona. En la sección de resultados de la investigación se mostrarán algunas heurísticas básicas que se encontraron para definir este valor.

Ventajas:

  • El modelo neurogenético no está acoplado a la aplicación base, por lo cual el investigador puede decidir trabajar con él o no.
  • El diseñador puede establecer grupos de neuronas que puedan ser susceptibles de ser asistidas y otros grupos que no estarán involucrados en el proceso neurogenético, dando nuevamente la posibilidad de realizar pruebas con topologías donde existan tipos mixtos de neuronas.
  • El usuario de la aplicación puede no tener clara la topología de las capas ocultas de la red y crear un modelo neurogenético estableciendo solo un parámetro que define que tan propensa es la red de crear una nueva neurona.
  • En la sección de observaciones se presentan detalles sobre las diferentes pruebas que se realizaron con el algoritmo, las cuales fueron en su mayoría favorables.

Desventajas:

  • Si se tiene un modelo realizado sin clases neurogenéticas, pensar en una transición a un modelo neurogenético para aprovechar sus servicios no es fácil, ya que se debe cambiar cada elemento estructural de la red para que sea compatible.
  • En algunos casos definir el parámetro para definir qué tan propensa es la red para hacer neurogénesis se convierte en un verdadero problema para el diseñador, pues sin el modelo de muerte neuronal la red puede crear más neuronas de las necesarias.
  • En la propuesta inicial se había considerado que el factor de crecimiento nervioso (FCN) se incrementaba de acuerdo a la activación o no de la neurona, sin embargo en el modelo de entrenamiento para Backpropagation no es posible utilizar funciones de activación escalón (que son las más parecidas a la activación natural de una neurona) sino que es necesario usar funciones continuas donde la neurona en cierta forma, siempre se activa.

    Solución: Fue necesario modificar la forma en que se consume el FCN de acuerdo al valor de activación de la neurona, lo que implicó normalizar ese valor para que el FCN fuera consumido de forma proporcional. Sin embargo para algunas funciones de transferencia puede no ser viable el uso de FCN.

  1. Iteración 6 – Desarrollo de notificación de eventos

En esta fase ya no se habla de prototipo ya que no se está realizando un proceso de investigación y prueba de resultados con un modelo parcialmente definido, sino que es una fase de desarrollo específica para un problema concreto.

El tercer prototipo de la iteración anterior ya representa el CORE del paquete de modelamiento, su funcionalidad se puede extender gracias a la atención dedicada a conseguir una alta cohesión y un bajo acoplamiento. Sin embargo, ya que se tiene como objetivo crear una interfaz gráfica de usuario (GUI) que no se encuentre acoplada al modelo, se decide crear un modelo de notificación de eventos que sea también funcional para el usuario que decida trabajar directamente con el CORE.

Objetivo:

Desarrollar un modelo de listeners o escuchas para notificación de eventos de tal forma que el usuario pueda ser notificado de cualquier evento que decida escuchar como por ejemplo, la creación de una nueva neurona, terminación de un ciclo de entrenamiento o cambio del peso sináptico.

Funcionalidad:

El usuario podrá crear una RNA y escuchar los diferentes eventos de los cuales desee ser notificado. De un modo similar a JOONE se propone un EscuchaEntrenamiento que le permite al usuario ser notificado de cuando se inicia el entrenamiento, cuando termina un ciclo y cuando termina el entrenamiento; así accede a información específica del estado de entrenamiento.

Modelamiento:

Cada objeto de la red tiene un escucha asociado un escucha que implementa métodos específicos de notificación de eventos que ocurran a ese objeto. El usuario puede querer, por ejemplo, ser notificado cuando una neurona particular cambie su valor bias, el método biasSeModifico(EventoNeurona e) le notificará este cambio y en EventoNeurona tendrá la información necesaria que para el caso sería el bias. La interfaz EscuchaAplicacion está diseñada para el que quiera ser notificado de todo posible evento que ocurra con la red, esta interfaz será la interfaz de comunicación entre el modelo lógico y el paquete visual que se mostrará en el siguiente apartado.


Ilustración 50 Modelo de escuchas y eventos de la aplicación

Ventajas:

El usuario será notificado de todos los eventos que desee escuchar. La implementación por interfaces Escucha que implementan los métodos de notificación y objetos Evento que contienen la información necesaria asociada al evento hacen el envío transparente.

Desventajas:

En el modelo de notificación de eventos soportado por el patrón de diseño de software Listener no existe una desventaja evidente.

  1. Iteración 7 – Desarrollo de Interfaz Gráfica de Usuario

A partir del prototipo 3 se inició en paralelo el diseño de interfaz gráfica. El primer desarrollo es el modelamiento de las interfaces de comunicación, de esta forma se puede trabajar al tiempo cada componente sin que exista conflicto. El modelo de comunicación definido se basa en la construcción de interfaces de escucha y eventos mostrados en la iteración anterior.

De acuerdo a la comunicación por eventos se establecen los siguientes criterios estructurales para estructurar el modelo de GUI:

  • Arquitectura de comunicación por eventos: Modelo Vista Controlador (MVC), aprovechando que ya se tiene un sistema de eventos.
  • Patrones de diseño para control de eventos (Comando), creación de objetos (Fábrica Abstracta), notificación de eventos (Observador), listas especializadas (Iterador) y objetos únicos (Singleton).
  • El CORE no debe verse afectado por ningún elemento visual o de control, de tal forma que se pueda trabajar solo con el CORE si así se desea. Por lo tanto el CORE debe ser parte del Modelo en la arquitectura.
  • El Controlador se comunica con el Modelo a través de referencias y el Modelo comunica cambios de estado a la Vista por medio de eventos de Interfaz.

La interfaz gráfica debe ofrecer los siguientes servicios (las opciones en azul no serán implementadas en esta versión):

  • Crear una red en el espacio de trabajo.
  • Crear neuronas estableciendo su función de transferencia y el valor umbral (o bias).
  • Conectar neuronas con un peso sináptico determinado o aleatorio en un intervalo.
  • Estimular la red con valores de entrada.
  • Entrenar la red estableciendo los parámetros básicos de entrenamiento (Salidas deseadas, Factor de aprendizaje, Máximo número de iteraciones, Error máximo permitido).
  • Cargar archivos con datos de los valores de entrada y de salida para estimular y entrenar una red.
  • Borrar neuronas y conexiones.
  • Crear capas con un número determinado de neuronas con función de transferencia y umbral iguales. Esta opción permite al diseñador crear redes estándar más rápidamente.
  • Conectar capas estableciendo un arreglo bidimensional de pesos para indicar que neuronas no se conectaran y cuales sí.
  • Crear varias redes que trabajen en espacios diferentes mientras no se conecten entre sí.

En términos generales la interfaz se presenta de la siguiente forma:


Ilustración 51 Visualización de la GUI

En el anexo 2 se presenta una guía más detallada de los servicios que provee y se muestra un ejemplo concreto para entrenar una red. Por ahora es suficiente decir que en esta fase se desarrolla y se prueba la aplicación, teniendo en cuenta toda posible notificación de mensajes al usuario según lo requiera. En la siguiente sección se muestra la arquitectura general del software, los detalles de la implementación de la GUI no son relevantes en este documento. En los anexos se presenta el uso de la interfaz gráfica.

  1. Modelo en capas por prototipos

Cada prototipo representa en sí un Esqueleto Ambulante en Crystal Clear, bajo un proceso iterativo en el que se van definiendo nuevos aspectos y restricciones sobre la investigación y las posibilidades descartadas. Una forma de ver el proceso realizado en el desarrollo del proyecto es como una serie de prototipos funcionales desarrollados a partir de un Esqueleto Ambulante – EA (el modelo básico de activación) que van optimizando y mejorando a cada prototipo anterior:


Ilustración 52 Esquema de capas de entregas y prototipos

Con el CORE básico funcional se realiza un análisis para identificar los eventos que ocurren y de esta manera determinar la comunicación por interfaz entre el modelo lógico y la interfaz. Este modelo de comunicación de eventos también es conveniente para el CORE en sí, permitiendo dar notificaciones al usuario cuando, por ejemplo, la red empieza el entrenamiento, termina una iteración, crea una neurona, etc; de tal forma que el usuario pueda decidir que hace con cada evento.


Ilustración 53 Diagrama de paquetes con arquitectura MVC

  1. RESULTADOS DE LA INVESTIGACIÓN

A continuación se clasifican por tema los resultados obtenidos en el proceso de desarrollo, en el cual los avances en codificación y las pruebas al software permiten rediseñar el modelo y postular nuevas características de una RNA para que su funcionamiento sea más análogo a una red biológica, teniendo presente los criterios de rendimiento y fiabilidad de un sistema de computo para resolución de problemas.

Ya que el proceso implicaba el modelamiento de los algoritmos normalmente usados, pero desde una perspectiva de procesamiento local, las primeras observaciones se hacen sobre esos algoritmos de entrenamiento, especialmente el backpropagation, de los cuales se especifican las consideraciones que debe tener un diseñador de RNA que sólo se pueden adquirir por experiencia y no disponibles en documentos de referencia.

Por otro lado, teniendo en cuenta que la aplicación no sólo se usará para estudios de investigación sino para solución de problemas reales, se hizo necesario realizar pruebas al tiempo de procesamiento, velocidad de convergencia, así como las ventajas y los problemas que persisten comparándose con otras herramientas de desarrollo de RNA. Para este caso se ha decidió usar como punto de referencia a JOONE, ya que su DOO lo hace el más parecido en el procesamiento.

  1. Criterios de decisión para entrenamiento backpropagation

En el proceso de entrenamiento de la red backpropagation para diferentes tipos de ejemplos que incluían: predicción de series y aprendizaje de funciones lógicas; se descubrieron ciertas consideraciones que se deben tener presentes para no cometer errores matemáticos o para no perjudicar la flexibilidad de algún algoritmo.

  1. Funciones de transferencia

Para entrenar una red cuyas salidas sean bipolares es importante tener en cuenta que se deben usar funciones de transferencia cuya salida oscile preferiblemente en dos estados. Para el caso concreto de la función OR, no es posible aprender todos los patrones usando una neurona de salida de tipo Lineal ya que su salida existe en todo el rango, por ello es necesario utilizar funciones como Escalón y Sigmoidales donde es posible solucionar la función OR.

Este aspecto es importante pues en algunos casos se puede pensar que la red no puede solucionar un conjunto de patrones debido a su arquitectura, pero puede que la imposibilidad se deba simplemente a la elección de las funciones de transferencia de las neuronas en las diferentes capas. De hecho para que una red aprenda el patrón generado por la función XOR necesita la capa oculta y la capa de salida con función de transferencia de salida bipolar (Sigmoidal o Escalón).

  1. Diferencial de función de transferencia

El algoritmo BP basado en la regla delta de Widrow-Hoff implica un descenso por el gradiente del error que se hace de forma iterada desde la última capa hasta la capa de entrada; este proceso implica el uso de la regla de la cadena para diferenciación del gradiente en cada capa y por lo tanto implica que la función de transferencia que se use debe tener derivada en todo el intervalo. En el caso del BP este requisito se hace necesario desde la capa oculta anterior a la capa de salida, por lo que es posible usar la función Escalón en la capa de salida, ya que la ecuación de actualización de error para esta capa no implica el uso de derivadas (tal como sucedía en el algoritmo de aprendizaje básico para un Perceptrón simple); sin embargo no es posible usar la función Escalón (o cualquier otra función discontinua) en otra capa que no sea la de salida.

  1. Topología

Este es uno de los aspectos más importantes en el entrenamiento de una red, ya que no existe un criterio matemático que permita establecer cuantas neuronas se deben usar en una capa oculta para un determinado problema. Como se revisó en los antecedentes de arquitectura, existen demostraciones matemáticas de existencia pero no de construcción; un diseñador enfrenta el problema de decisión de la arquitectura de la red como uno de los más influyentes para un proceso de aprendizaje exitoso.

En la etapa de diseño de una red neuronal, decidir las funciones de transferencia se basa en el conocimiento matemático de lo que se quiere obtener y no de un resultado de la experiencia; de hecho, en términos biológicos no se habla de funciones de transferencia y se utiliza sólo en términos computacionales pues buscan simplemente una representación de la activación neuronal biológica (que se parece por lo general a la función escalón: todo o nada). Por otro lado, decidir la arquitectura de una red se basa en la experiencia del diseñador y no depende principalmente de un conocimiento matemático; en una red biológica sí importa la arquitectura neuronal pero su estructura no está determinada por un agente externo a la red sino por un aprendizaje adquirido en el proceso de evolución basado en la experiencia y codificado en el ADN.

Es por esta razón que decidir sobre aspectos de la arquitectura de la red concierne a la red en sí, ya que es una propiedad de la red y no de quien la entrena; esto se refleja en el factor de aprendizaje de la red, cada vez más es la red la que decide cual es el mejor factor de aprendizaje, incluso cada neurona lo decide de acuerdo a su propio error, esto sucede porque el factor de aprendizaje es una propiedad de la red y no del entrenador.

  1. Presentación de los patrones de entrenamiento

En la formulación original del BP, todos los patrones se presentaban a la red y se determinaba la variación de los pesos según el entrenamiento de cada patrón, cada variación se iba acumulando en una nueva variable y solo al final de la época se hacia una sola actualización de los pesos de la red basada en esta acumulación de variaciones; este tipo de aprendizaje se suele llamar aprendizaje por lotes (batch). Por otro lado está el aprendizaje en serie (online) en el cual cada vez que se presenta un patrón se hace una actualización en los pesos de la red. Este tipo de aprendizaje tiene mejor rendimiento computacional ya que en muchos casos al modificar los pesos para que representen mejor un patrón inicial, pueden coincidir para que otro patrón posterior ya quede bien entrenado.

El aprendizaje en serie es más natural que un aprendizaje por lotes ya que los organismos no aprenden después de ser sometidos a grandes conjuntos de estímulos, sino que su proceso de aprendizaje se da paso a paso con cada experiencia. Un aprendizaje por lotes implicaría una memoria atemporal que contenga cuales deberían ser las modificaciones para comportarse de manera adecuada ante estímulos que ya han sucedido y más aún, el organismo debería determinar que estímulos pertenecen a un conjunto dado de aprendizaje y no aprender hasta que este conjunto haya sido procesado, lo cual está lejos de ser posible ya que va en contra de la adaptación.

En este sentido el aprendizaje online tiene mucho más sentido y computacionalmente también resulta ser más efectivo. Hay que tener en cuenta que el orden de la presentación de los patrones afecta el aprendizaje, ya que el último patrón siempre sería el mejor entrenado, modificando los entrenamientos anteriores; por ello es necesario que la red se entrene con orden aleatorio en cada época, de tal forma que “el aprendizaje no se vicie a favor del último patrón” (Brío, 2003). Esta aleatoriedad puede permitir incluso que el algoritmo pueda saltar mínimos locales en los que se haya quedado estancado, gracias a la dirección que tomaría el error presentando los patrones en distinto orden.

Las experiencias de interacción de un organismo con su entorno no son secuenciales y mucho menos ordenadas, un organismo aprende a partir de experiencias individuales que se van relacionando internamente en su red neuronal.

  1. Acercamientos potenciales al modelo biológico

A continuación se describe de forma resumida los resultados obtenidos en los diferentes prototipos y que brindan al modelo una serie de posibilidades que lo hacen más acorde al modelo biológico:

  • El DOO permite extender la funcionalidad de la neurona, de la sinapsis o incluso agregar nuevos objetos que representen, por ejemplo, células gliales. De esta forma, es posible implementar diferentes mecanismos de activación de la neurona, como trenes de impulsos o manejar un modelo de neurotransmisores.
  • Los estados de activación y reposo son inducidos por procesos internos de la neurona dependiendo de las condiciones del medio, lo que es acorde al modelo biológico. Esto se demuestra en la visibilidad privada de los métodos para alcanzar cualquiera de los dos estados.
  • El estado en reposo, una vez se activa la neurona, puede implementarse con un retardo de tiempo en el cual la neurona no puede volver activarse. Esto permitiría observar comportamientos en la ejecución de la red con estímulos consecutivos.
  • La red permitiría hacer estudios biológicos de más alto nivel pues se puede implementar en el método estimular una condición para medir la hiperpolarización (directamente el umbral de activación sin usar función de transferencia). Donde la salida de la neurona corresponde al nivel de polarización real de la neurona.

    public
    void estimular(double estimulo){

        nivelDePolarizacion += estimulo;

        if(nivelDePolarizacion >= UMBRAL){

            activar();

        }

    }

    Optimización: Si la Neurona no se dispara o no necesita corregirse no se realiza procesamiento con las neuronas postsinápticas o presinápticas respectivamente, ya que la neurona no notifica cambio alguno a las demás.

  • Al trabajar en paralelo y usando el modelo biológico por activación de potencial como en el punto anterior, se puede desarrollar un modelo que se sincroniza temporalmente (los mismos 5 estímulos presentados más de una vez a una neurona no provocarán la misma respuesta sí su orden de llegada es diferente), esto se podría modelar con sinapsis de tipo inhibitorio y de tipo excitatorio, lo cual es fácilmente implementable).
  • Existen pruebas de que agregando unidades escondidas con los pesos y funciones de activación adecuados, una función input-output puede ser aproximada, pero de sus demostraciones no se deduce el algoritmo cascada-correlación, ni ningún otro algoritmo, pues son teoremas de existencia no constructivos. Esto quiere decir que no está garantizado que cascada-correlación termine, pues el algoritmo solo termina cuando el error es lo suficientemente pequeño.
    El modelo propuesto siempre terminará ya que se basa en la cantidad máxima de intentos permitidos y la neurogénesis se realiza con base al índice de insatisfacción de la red.
  1. Estructuras de Datos e Ingeniería de Software aplicados

A continuación se listan los aspectos más importantes en lo que corresponde al manejo de los datos, su almacenamiento en memoria y su arquitectura general:

  • En la implementación como se trabaja con objetos, no hay redundancia de información en las estructuras de datos pues los objetos se comunican por referencia y no por valor.
  • La estructura de datos está completamente distribuida entre las neuronas y entre las capas.
  • El componente principal que se evidencia en la codificación es el envío de mensajes que comunican eventos, con el patrón Listener.
  • Cada neurona sólo sabe de las demás lo biológicamente necesario (que queda representado por interfaz), el intercambio de información entre neuronas se establece por notificaciones y eventos entre interfaces.
  • Una neurona tiene referencia a las neuronas postsinápticas y presinápticas, el modelo es extensible para trabajar modelos de resonancia magnética, creando grupos de neuronas resonantes.
  • Se trabaja el algoritmo de backpropagation para entrenar la red y el feed-forward para ejecutarla, pero ambos procesos se realizan de manera local y no de forma matricial, permitiendo trabajar parámetros locales por cada neurona y cada sinapsis.
  • Para manejar información que se considera emergente (difundida a la red por una simulación del trabajo de los péptidos) se especifican variables estáticas de tal forma que cualquier elemento de la red pueda acceder a esa información, pues de hecho, es información de la red en general.
  1. Rendimiento de la aplicación

Se hicieron diferentes pruebas para validar si el sistema era viable o no, ya que altos tiempos de procesamiento o una mala convergencia requerirían cambios estructurales de fondo para que el sistema tenga un uso práctico, se hicieron pruebas de rendimiento en tiempos de procesamiento y convergencia del error.

  1. Tiempo de procesamiento

El tiempo de procesamiento tanto para ejecución como para entrenamiento del modelo propuesto es en general menor al tiempo requerido por JOONE para hacer la misma tarea. A continuación se muestra una tabla comparativa de tiempos en nanosegundos (ns) de proceso de las dos aplicaciones para el entrenamiento de una función XOR, compuesta por 2 neuronas en la capa de entrada, 2 neuronas en una capa oculta y 1 neurona en la capa salida; 4 patrones de entrenamiento [0, 0] = 0, [0, 1] = 1, [1, 0] = 1 y [1, 1] = 0; y 100 iteraciones desde el momento en que inicia el entrenamiento. Ambas redes constan con los mismos parámetros de entrenamiento y se ha manejado un margen de error muy pequeño para que no terminen antes de las 100 iteraciones máximas establecidas.

Tiempo en ns JOONE

Tiempo en ns Modelo propuesto

105044706

29288010

109180916

25805304

97675612

28070886

111354935

29207762

103456864

29297998

105382807

28057546

105042680

28697223

107806998

30019178

97823467

28159514

104645702

30235966

105181524

29277045

109105557

25790777

106177251

29056067

110439385

27313458

98767721

26137749

100775168

28614531

102643283

28537566

103724007

27981280

103749848

27207717

100581499

26524251

97915936

28139959

107872649

28209801

97476565

38870932

103378922

27226575

108441506

30491096

 

 

104145820,3

28648727,64

Tabla 3 Comparación de tiempos para OR con JOONE

Los dos últimos valores en negrita muestran el promedio de tiempos, aproximadamente 104E6 ns para el caso de JOONE y 28E6 ns para el modelo propuesto, que para este caso implica que el modelo es 3,63 veces más rápido que JOONE. Cabe aclarar sin embargo que JOONE posee más métodos de validación para multiproceso, además usa heurísticas de aceleración de Backpropagation que pueden retardar el procesamiento del ciclo pero hacer converger más rápido la salida deseada, por lo cual el error de JOONE en 100 iteraciones es menor al del modelo propuesto, en el cual no se usa ninguna heurística de aceleración del entrenamiento por las razones expuestas en el modelo teórico.

No obstante, la idea de comparar estos tiempos de procesamiento es validar sí diseñar el modelo a nivel neuronal y con comunicación distribuida resultaba ser mucho menos eficiente que el modelo en JOONE, que a pesar de ser orientado a objetos el proceso de entrenamiento se realiza sobre matrices definidas. Los resultados obtenidos señalan que a pesar de que el proceso es más local y requiere mayor cantidad de objetos y llamadas a funciones su procesamiento no deja de ser eficiente comparado con uno de los motores orientado a objetos más poderosos.

Las pruebas realizadas se encuentras en el anexo 3, en promedio el tiempo de proceso para el modelo propuesto es 3.79 veces más rápido que JOONE.

  1. Velocidad de convergencia de la red

En este caso se desea revisar la velocidad de convergencia de la red donde se espera que JOONE se aproxime más rápido a una salida deseada pues implementa el método de optimización para backpropagation: momentum. Se realizaron las pruebas para los casos estudiados (también encontrados en el anexo 3) y se muestra aquí el error resultante para una red con 2 neuronas en la capa de entrada y 1 en la capa de salida que intenta aprender el patrón OR, nuevamente 100 iteraciones y con factor de aprendizaje 0.4.

La siguiente tabla muestra los resultados obtenidos del error medio cuadrático, calculado como la raíz de la media de los errores cuadráticos de los patrones, tal como se expone en la sección de antecedentes para el caso del algoritmo backpropagation.

JOONE

Modelo

0,0590003855199184

0,0622930432007797

0,0590594537667922

0,0581508923660227

0,0591579116127307

0,0565215569611386

0,0590040052567018

0,0661091003777850

0,0589941678952993

0,0616390821104129

0,0589616072526558

0,0604862330530520

0,0591078251691160

0,0624437028514106

0,0589748851801691

0,0635904062456660

0,0590442348498723

0,0586461389010092

0,0590132756422512

0,0603240353634954

0,0590085814157120

0,0505017321339155

0,0590197856018559

0,0532978455134146

0,0589542343611822

0,0598114298829180

0,0589637052753028

0,0563726550606301

0,0591576099500881

0,0604468216537442

0,0592043912941388

0,0607553614797094

0,0591589438425323

0,0556722537163499

0,0590782104945870

0,0614127355321778

0,0590673165812319

0,0610987867977398

0,0590397885264402

0,0598610535265038

0,0591806920048292

0,0613737929681438

0,0590548100711146

0,0595623171283819

Tabla 4 Comparación de convergencia del error

Al contrario de lo que previsto, la velocidad de convergencia del error es similar en ambas aplicaciones, siendo levemente más rápido JOONE. No obstante, una revisión de los datos muestra que el modelo propuesto posee más varianza en los datos. Esto se debe a que en el modelo se han inicializado los pesos con valores aleatorios entre -2 y 2, mientras en JOONE se desconoce la forma de inicialización de pesos. Es posible que esta diferencia haga más variable el proceso en el modelo propuesto.

Incluso para el ejemplo de aproximación a la función senoidal se encuentra que el promedio del error evaluado tras 100 iteraciones es 0.000937 para el modelo propuesto mientras que para JOONE es de 0.02477; esto muestra que las arquitecturas son muy sensibles a las condiciones iniciales y no se puede establecer con certeza (mientras no se conozca el mecanismo interno de JOONE de inicialización) cual modelo es mejor.

  1. Aplicación de neurogénesis en el modelo

En el prototipo final donde se implementa la neurogénesis se realizaron diferentes pruebas donde se obtuvieron las siguientes conclusiones.

  1. Pruebas
  • Neurogénesis inútil

    Objetivo: establecer si el algoritmo realiza neurogénesis cuando no es necesario, para la función OR se estableció una red de 2 capas, para la cual es evidente que no es necesario realizar neurogénesis. Se definen 10.000 iteraciones máximas y un error permitido exagerado de 1E-100 para que la red logre terminar todas las iteraciones.

    Resultado: La red termina todas las iteraciones sin realizar neurogénesis, esto confirma que el algoritmo no se activa si no es necesario hacerlo.

  • Neurogénesis apropiada

    Como se mostro en el desarrollo del prototipo, se hizo una validación inicial para la solución del XOR con una red de 2 capas. Como es conocido esta red solo puede aproximar funciones no lineales y el XOR se representa en una función no lineal. El resultado de aplicar el algoritmo es una creación estratégica de neuronas que deja la red con una arquitectura adecuada para la solución de la función.

    Se hicieron pruebas con otro problema que consistía en aproximar una función senoidal en la cual el número de neuronas era inapropiado para tal efecto, el resultado permitió establecer que el número de neuronas creadas con el índice apropiado para el valor máximo de insatisfacción era correcto.

    De estas pruebas se pudo establecer de paso, una heurística que se muestra más adelante en la sección desventajas, ya que definir este parámetro no resulta una cuestión tan trivial.

  • Importancia del Factor de Crecimiento Nervioso FCN

    La neurona que más haya consumido factor de crecimiento nervioso FCN es la neurona resonante de la red que está solicitando ser asistida en un proceso de neurogénesis. Para establecer la neurona resonante solo es necesario manejar el índice a nivel neuronal y realizar una comparación con la variable estática que identifica cual es la neurona con mayor FCN consumido.

    Sin embargo, es deseable tener la posibilidad de implementar un mecanismo de muerte neuronal, el cual se puede desarrollar a partir de un FCN presente en la red, de tal forma que las neuronas consumen el FCN de su entorno y si este se vuelve escaso deben competir por él, así las neuronas que no logren adquirir su alimento, mueren.

  1. Ventajas
  • Mientras la red se encuentre estable y convergiendo a un valor no se realizará proceso de neurogénesis. Esto se concluyó de pruebas realizadas como la prueba 1.
  • Si la red no puede solucionar el problema por una arquitectura inadecuada, el algoritmo buscará una arquitectura más conveniente.
  • Si la red se vuelve inestable o se queda en un mínimo local el algoritmo lo puede detectar y hacer una corrección, en este caso provocar una neurogénesis, que al agregar una nueva neurona se saltará el mínimo local.
  • El usuario adquiere experiencia en la determinación de un solo valor que en este caso corresponde al valor máximo de insatisfacción que aceptará de la red y no del número de neuronas y capas que consideran mayor información.
  • Por la razón anterior es más viable desarrollar una meta-red que aprenda cual debe ser el valor de insatisfacción máximo permitido por una red para realizar neurogénesis en un problema concreto. Esta meta-red aprendería con relación a un solo valor de referencia y no asignar una variable al número de neuronas x en una capa determinada y para un problema dado.
  • Es fácil convertir una red tradicional a una que maneje neurogénesis, pues consiste en hacer una clonación de esa red pero con los objetos apropiados, sin necesidad de establecer nuevos parámetros en cada caso, solamente al momento de entrenar.
  1. Desventajas
  • Se hace necesario que el usuario establezca mayor número de iteraciones máximas para el algoritmo, pues en ellas se incluye todo el proceso de neurogénesis, por lo tanto existe mayor tiempo de procesamiento.

    Replica: Si bien lo anterior es cierto, el proceso general de entrenamiento disminuye ya que el usuario no gasta tanto tiempo en prueba de error de diferentes arquitecturas sino en el establecimiento de un valor para máxima insatisfacción permitida.

  • Realizar neurogénesis cuando el error se queda en un mínimo local puede no ser la mejor solución, ya que podría deberse simplemente a la elección de pesos iniciales no favorables, pero no una limitación de la arquitectura de la red.

    Solución posible: Considerar diferentes alternativas para evaluar la mejor forma de actuar ante este evento, ya que lo importante sería la detección de la inestabilidad.

  • Es difícil determinar cuándo se está haciendo sobre-entrenamiento, debido a que la creación de más neuronas disminuye el error en la mayoría de casos, pero también puede estar ampliando el espacio de estados más de lo necesario. Por lo cual el investigador logrará identificar el sobre entrenamiento solo hasta la fase de validación con el conjunto de test para determinar si la red sigue teniendo un buen grado de generalización.
  • Si bien definir el valor máximo de insatisfacción que permitirá la red para que se realice neurogénesis es beneficioso en el sentido de que el problema se ha reducido a un solo valor, está presente ahora un nuevo problema que consiste que valor debe escoger el usuario dependiendo del problema dado. Se proponen las siguientes heurísticas deducidas de algunos problemas trabajados, sin embargo es necesario hacer pruebas para redes de más de 3 capas, lo cual se propone en trabajo futuro.

    Solución: Para definir el valor máximo de insatisfacción se recomienda la siguiente heurística:


    Donde errorMedio indica el error promedio que se obtiene entrenando la red con la arquitectura inicial. El problema de esta heurística es que necesita conocer este valor promedio, lo cual indica que la red debe haber sido entrenada anteriormente sin neurogénesis para intentar establecer este valor.

  • Sigue siendo muy sensible a condiciones iniciales, aun con la heurística definida la cantidad de neuronas varia de vez en cuando en forma significativa para el mismo tipo de entrenamiento pero con diferentes pesos iniciales.
  • Aún cuando se normalicen los valores de las salidas para que cada neurona actualice su factor de crecimiento nervioso con respecto a un mismo referente, el consumo del FCN se vicia a favor de las neuronas con funciones de transferencia que no estén limitadas (caso para una función de transferencia lineal y una sigmoidal que ya está limitada [-1, 1]).
  1. PROPUESTAS PARA OPTIMIZACIÓN Y EXTENSIÓN DEL MODELO

A continuación se muestran las técnicas normalmente usadas en los algoritmos tradicionales para optimizar el proceso de aprendizaje. Si bien ya se ha mencionado que la mayoría de estas técnicas no tienen un fundamento biológico sino matemático, es importante resaltar que el modelo permite implementarlas. Por ello, al final de este capítulo se dedica una sección de extensibilidad de software donde se muestran algunos ejemplos concretos de cómo podría un investigador desarrollar modelos propios sin importar las variables que requiera o incluso si necesita nuevos tipos de unidades de procesamiento además de la neurona.

  1. Heurísticas de aceleración del proceso de aprendizaje

En general se puede aplicar cualquier heurística de aceleración para el aprendizaje de la red, en este caso se mencionan las posibilidades más conocidas, sin mencionar que el modelo es perfectamente compatible con un trabajo multiproceso en el que cada objeto o grupo de objetos puede ser procesado por un hilo diferente. Las heurísticas que se mencionan aquí se han presentado en el capitulo 2.2.5 en la sección heurísticas de aceleración del proceso de aprendizaje BP.

  • Algoritmos derivados del BP son fácilmente implementables en el modelo propuesto debido a su distribución en el diseño de la red y la independencia de cada propiedad de la red y sus componentes, el caso de Quickprop y SuperSab que son los más conocidos, ya se describieron y basta con extender la funcionalidad de la clase Backpropagation o implementar directamente el algoritmo de entrenamiento para así definir el algoritmo. En caso de ser necesario algún tipo de manejo a nivel neuronal o sináptico se puede extender su funcionalidad para implementar la heurística respectiva.
  • Funciones de transferencia especializadas pueden añadirse fácilmente al modelo usando el enum FuncionDeTransferencia, lo que permitiría establecer funciones más específicas como la demostrada por Falhman y presentada en los antecedentes.
  • Conjuntos de pesos compartidos son posibles usando simplemente una referencia adicional al mismo objeto sinapsis, la modificación al objeto será actualizada inmediatamente en todas sus referencias.
  1. Técnicas para reducción de tamaño de una red

Las técnicas de podado y decaimiento de pesos son las más conocidas. La primera busca cuales son los pesos que después de un proceso de aprendizaje no están aportando realmente al funcionamiento de la red (por ejemplo sinapsis que siempre se activen con valores cercanos a 0); mientras en la segunda disminuye un valor al peso gradualmente de tal forma que lo va debilitando a menos que se refuerce, aquellos pesos que no se actualicen serán eliminados eventualmente. Este último modelo corresponde biológicamente al desgaste natural y la entropía de todo sistema vivo, solo si se retroalimenta el sistema es posible que se mantenga al borde del equilibrio y de esta manera conservar su integridad.

En el modelo propuesto se trabaja un esquema parecido al decaimiento de pesos pero orientado a la neurona, la cual disminuye su factor de crecimiento nervioso en cada iteración, simulando un proceso degenerativo natural. Para la actualización de pesos sería conveniente usar el modelo para decaimiento de pesos, sin embargo no se implementarán en esta versión.

  1. Extensibilidad

Se dio gran importancia a construir un software que fuera extensible, ya que en el campo de las RNA lo que más les interesa a los investigadores es poder diseñar y probar sus propios modelos y algoritmos.

Es posible implementar nuevos algoritmos de entrenamiento extendiendo la clase abstracta Entrenador así como es posible, de manera análoga a como se realizó con el modelo neurogenético, usar las interfaces de Escucha para implementar algoritmos que requieran información de otros sistemas, aunque se advierte que se debe conservar la integridad del modelo sistémico.

También es posible implementar nuevos tipos de eventos y escuchas asociados a un objeto, de tal forma que si una neurona tiene nuevas propiedades y operaciones que requieran ser notificadas, es posible hacerlo extendiendo los mecanismos para notificación de eventos.

Un ejemplo más concreto: en la fase de modelamiento se considero trabajar 3 objetos en la red neuronal: las Neuronas
Sensoras que reciben señales del medio, las Neuronas Efectoras y las InterNeuronas, teniendo en cuenta que biológicamente estas células tienen diferencias sutiles y más teniendo en cuenta que en los algoritmos computacionales, se trabaja de forma diferenciada las neuronas de las capa de entrada y de salida (por ejemplo, en el backpropagation la capa de salida considera una ecuación de sensitividad distinta y la capa de entrada no requiere calculo de sensitividad, pues no afecta el entrenamiento). Con este modelo se puede además ser más independiente del uso de capas, pues cada tipo de neurona puede notificar por medio de Eventos que ha obtenido un resultado (Por ejemplo las neuronas efectoras podrían notificar a la red cuando se hayan activado, sin necesidad de que la red este obligada a solicitar su valor de salida), además un investigador podría querer dar atributos especiales y que se acerquen más a la realidad a una neurona sensora o efectora, modificando incluso la forma en que se conectan y modificar así la Sinapsis.

Es posible también mejorar la abstracción para estos modelos mediante interfaces que implementen comportamientos de grupos de sistemas, por ejemplo la interfaz Estimulable implementaría el método estimular(…) que sería aplicable ya no solo a neuronas, sino a péptidos, glías o simplemente células.


Ilustración 54 Modelo para extensibilidad neuronal.

  1. TRABAJO FUTURO
  • Investigar basándose en esta aplicación las posibilidades de crear un nuevo modelo de aprendizaje que no se encuentre basado en la retro propagación del error, demostrado como un proceso no natural; sino teniendo en cuenta las interacciones locales entre neuronas y con el medio.
  • De la misma forma al punto anterior, investigar las posibilidades de diseñar una red en estado primitivo que vaya aprendiendo y se vaya auto organizando hasta alcanzar niveles de discriminación más avanzados para establecer si una red aprende en su fase de construcción y luego se adapta agregando nuevos pesos, similar al constructivismo de Piaget; o, se entrena constantemente en cualquier configuración.
  • Implementar modelo de decaimiento de pesos para eliminar conexiones innecesarias e incluso neuronas.
  • Presentar los patrones de forma aleatoria para saltar mínimos locales y evitar un aprendizaje a favor del último patrón presentado. Esto porque se maneja el aprendizaje en línea y la presentación siempre igual de patrones hace que el entrenamiento se vicie a favor del último patrón.
  • Trabajar con factores de aprendizaje variables por cada neurona de manera similar a como trabaja el SuperSab, para hacer más eficiente y real el proceso, en el cual cada neurona varia su factor de aprendizaje de acuerdo a la tendencia del error en esa neurona y no de acuerdo a una aproximación del error de la red como se hace normalmente con un factor de aprendizaje único.
  • Extender el modelo basado en reglas locales de neurogénesis y sinaptogénesis que soporten las evidencias de plasticidad neuronal en daños cerebrales, re conexión de circuitos y recuperación.
  • El modelo para neurogénesis se debe probar en redes de gran tamaño de las cuales se conozca una falencia en el número de neuronas y conexiones para aprender con éxito un conjunto de patrones dado. Así se podrá evaluar si el algoritmo propuesto sigue siendo estable a gran escala.
  • Es deseable establecer que características que afecten al error van cambiando y de qué forma, para establecer si un proceso neurogenético va en pro de la solución al problema o si se deben establecer nuevos mecanismos con una arquitectura a la que haya llegado el algoritmo.
  • Posibilidad de crear múltiples redes y permitir su interconexión, es decir trabajar con todo un entorno de redes en el cual las mismas redes puedan decidir si se conectan o bien, el usuario forzar una interconexión.

CONCLUSIONES

Se cumplió a cabalidad con los objetivos planteados en el anteproyecto, de tal forma que fue posible construir y validar un modelo de red neuronal artificial en el cual se crean neuronas y conexiones de forma dinámica durante el proceso de aprendizaje, con base a un estudio de las propiedades sistémicas de las redes biológicas que por naturaleza desarrollan procesos de plasticidad neuronal.

El prototipo implementado a partir de un modelamiento de software y un diseño orientado a objetos permitió establecer diferentes aportes concluyentes desde la ingeniería de sistemas a un campo tan interdisciplinar como la inteligencia artificial:

  • Se desarrollaron prototipos por capas que desacoplan el modelo de implementaciones particulares, de tal forma que todo modelo artificial se maneja con un modulo independiente al modulo de comunicación neuronal, que es la base de procesamiento de cualquier tipo de algoritmo de estimulo y/o entrenamiento.

  • El diseño orientado a objetos permite establecer cuáles son las propiedades que deben ser manejadas por el entrenador y cuáles por la red, así será fácil determinar en futuras investigaciones si el uso de una variable debe ser mediado por el diseñador de la red o no, tal como se concluyó para la topología, la cual es claramente una característica definida por la red y no por el medio.
  • El modulo de comunicación neuronal desarrollado corresponde a un modelo biológico en el cual cada neurona y cada sinapsis poseen los atributos y ejecutan los procesos que les corresponden de forma local, ajustándose al comportamiento real de estímulo-respuesta que ha sido normalmente subestimado en los desarrollos de redes neuronales artificiales.
  • Este prototipo basado en los principios de procesamiento local y emergencia muestra la posibilidad de implementar algoritmos de procesamiento y de entrenamiento más acordes a los procesos biológicos, tal como se evidenció en la incompatibilidad biológica del backpropagation. Esto implica que los procesos en redes neuronales artificiales que pretendan incrementar la autonomía de la red no deben estar ligados a modelos matemáticos que buscan solo la optimización, sino que contemplen los mecanismos de adaptación de redes biológicas.

  • El modelo provee de mayor autonomía a la red pues la topología no depende totalmente del diseñador, las falencias de la red se intentan localizar y asumir mediante la neurogénesis sin pretender apoyarse totalmente en la capacidad del diseñador. Esto implica que al ser más adaptable, el desarrollo de las fases de implementación se optimiza, de modo que el diseñador no necesita definir por medio de prueba y error la topología de la red, sino controlar una variable que define la propensión de la red a realizar neurogénesis.

Por otro lado el prototipo superó las expectativas consideradas inicialmente en términos de rendimiento y extensibilidad en relación a las aplicaciones usadas tradicionalmente:

  • El tiempo de entrenamiento para diferentes configuraciones de redes fue en promedio 3.63 más rápido que para el caso de JOONE y en la velocidad de convergencia de la red no hubo una diferencia marcada a pesar de que JOONE maneja algoritmos de optimización para el backpropagation como el momento.
  • La extensibilidad amplía las posibilidades de implementar otros modelos teóricos de la neurobiología como por ejemplo, la sinapsis tripartita y la teoría de resonancia electromagnética, entre otros; así como modelos teóricos de las redes neuronales artificiales que incluyen no solo modelos supervisados sino también modelos sin supervisión.

Ya que el prototipo presentado en un producto de software que ha sido analizado, estudiado, diseñado e implementado para salirse de los paradigmas convencionales en el desarrollo de redes neuronales artificiales; es viable desde la perspectiva biológica y computacional por los puntos mencionados anteriormente, será posible ahondar en la investigación de modelos artificiales de las ciencias cognitivas que habían estado restringidos por el modelo matricial y que ahora son posibles en un modelo con enfoque sistémico, tal como se mostró en este caso para el proceso de neurogénesis.

BIBLIOGRAFÍA

Anderson, J. (2007). Redes Neuronales. México: Alfaomega.

B. Seri, J. M.-V.-B. (2001). Astrocytes give rise to new neurons in the adult mammalian hippocampus. J. Neurosci.

Bliss TV, L. T. (2004). Long-term Potentiation LTP. Recuperado el 2008, de http://books.google.com.co/books?id=oDHit2frTYsC

Brío, B. M. (2003). Redes Neuronales y sistemas difusos. Universidad de Zaragosa: Alfaomega.

Cajal, S. R. (1991). Estudios sobre la degeneración y regeneración del sistema nervioso. Nueva York: Oxford University Press.

Cajal, S. R. (1998). Textura del sistema nervioso del hombre y los vertebrados. Zaragoza, España: Springer-Verlag.

Capra, F. (1998). La trama de la vida. Barcelona: Anagrama.

Capra, F. (2002). Las conexiones ocultas. Barcelona: Anagrama S.A.

Ceria, S. (2004). Casos de Uso: Un método práctico para explorar requerimientos. México.

Cockburn, A. (2002). Crystal Clear. A human-powered methodology for small teams, including The Seven Properties of Effective Software Projects.

Cockburn, A. (1997). Software development as Community Poetry Writing. Cognitive, cultural, sociological, human aspects of software development. Annual Meeting of the Central Ohio Chapter of the ACM.

Cockburn, A. (2001). Surviving Object-Oriented Projects. Addison-Wesley.

Eriksson, P. S., Perfilieva, E., Björk-Eriksson, T., Alborn, A. M., Nordborg, C., Peterson, D. A., y otros. (1998). Neurogenesis in the adult human hippocampus. Nature , 4: 1313–17.

Facultad de Ingeniería Eléctrica de la Universidad Tecnológica de Pereira. (2003). Tutorial Redes Neuronales. Obtenido de http://ohm.utp.edu.co/neuronales/main.htm

Funahashi, K.-i. (1998). Multilayer neural networks and Bayes decision theory. Oxford: Elsevier Science.

G. Siegel, B. A. (1999). Basic neurochemistry. Molecular, cellular and medical aspects. Philadelphia: Lippincott Williamns & Wilwins.

Gigerenzer, G. (19 de Abril de 2008). Redes: La intuición no es irracional. (E. Punset, Entrevistador)

Goleman, D. (1996). Inteligencia emocional. Barcelona: Kairos.

Gould, E., Reeves, A. J., Graziano, M. S., & Gross, C. G. (1999). Neurogenesis in the neocortex of adult primates. Science.

Hongjun Song, G. K. (2005). New Neurons in the Adult Mammalian Brain: Synaptogenesis and Functional Integration. The Journal of Neuroscience.

Imura, H. I. (2003). The predominant neural stem cell isolated from postnatal and adult forebrain but not early embryonic forebrain express GFAP. Neurosci.

Jacobson, M. (1991). Developmental Neurobiology. Nueva York: Plenum Press .

James A Freeman, D. S. (1993). Redes neuronales: Algoritmos, aplicaciones y técnicas de programación. Madrid: Ediciones díaz de Santos.

Johnson, S. (2007). Sistemas emergentes. O qué tienen en común hormigas, neuronas, ciudades y software. Madrid: Turner.

José Manuel García-Verdugo, S. L.-G. (1988). Postnatal neurogenesis in the olfactory bulbs of a lizard . A tritiated thymidine study. Neurosci. .

José Ramón Hilera Gonzales, V. J. (1994). Redes neuronales artificiales: Fundamentos, modelos y aplicaciones. Madrid: Rama.

Jutten, C. (1995). Learning in evolutive neuralarchitectures: And ill-posed problem? España: Torremolinos.

Lebiere, S., & Fahlman, C. (1990). The cascade correlation learning architecture. Carnegie-Mellon University , Technical Report CMU-CS-90-100,.

Llinás, R. (2003). El cerebro y el mito del yo: el papel de las neuronas en el pensamiento y el comportamiento humano. MIT: Norma.

Lois, A. Á.-B. (1995). Neuronal stem cells in the brain of adult vertebrates. Stem Cells.

Marrone, P. (2007). JOONE The Complete Guide.

McFadden, J. (2003). The conscious electromagnetic field theory. Obtenido de http://www.surrey.ac.uk/qe/cemi.htm

Mora, F. (2002). El reloj de la saibudira: Tiempos y espacios en el cerebro humano. Madrid: Alianza.

Morales, A. (2007). Crystal Clear: una forma de trabajo. Obtenido de http://blog.tercerplaneta.com/2007/02/ms-all-de-las-capacidades-tcnicas-que.html

Nottebohm, F. (1985). Neuronal replacement in adulthood. Hope for a new neurobiology. Nueva York: New York Academy of Sciences.

Papert, M. M. (1987). Perceptrons – Expanded Edition: An Introduction to Computational Geometry. The MIT Press, Massachusetts, EEUU , 275 páginas.

Pasantes, H. (1997). De neuronas, emociones y motivaciones. Mexico: fondo de cultura economica.

Penrose, R. (1999). The emperor´s new Mind. Penguin.

Pert, C. (1985). Neuropeptides and their receptors.

Platt, J. (1991). A resource-allocating network for functions implementation. . Neural Computation , 3:213-225.

R. E. Ellis, J. Y. (1991). Mechanisms and functions of cell death. Annu Rev Cell Bio.

Rocha, E. (2007). Redes generativas ¿una respuesta a las preguntas abiertas del constructivismo? Facultad de Ciencias.

Russell, S. J. (2004). Inteligencia artificial: Un enfoque moderno. Madrid: Prentice Hall.

Schuman, E. M., & Madison, D. V. (1994). Locally Distributed Synaptic Potentiation in the Hippocampus. Science , 263, 532-536.

Science. (Octubre de 2002). New Insights into Neuron-Glia Communication. Recuperado el 2008, de http://www.sciencemag.org/cgi/content/abstract/298/5593/556

Tanco, F. (2003). Introducción a las redes neuronales artificiales. Buenos Aires, Argentina: Universidad Tecnológica de Buenos Aires.

Tapia, R. (2001). Las células de la mente. México: La ciencia para todos.

Universidad Tecnológica de Pererira. (2009). UTP. Obtenido de http://ohm.utp.edu.co/neuronales/Capitulo2/Recurrentes/EntrenamientoE.htm

Varela, F. (2002). El fenómeno de la vida. Santiago de Chile: Dolmen ediciones S.A.

Villalón, Á. L. (2002). Páginas de docencia de Psicología. Recuperado el 2009, de http://www.uam.es/personal_pdi/medicina/algvilla/plasticidad/memoria.html

Viñuela, P. I. (2004). Redes de neuronas artificiales: Un enfoque práctico. Madrid, España: Pearson Prentice Hall.

Volterra, A., Magistretti, P., & Haydon, P. (2002). The Tripartite Synapse: Glia in Synaptic Transmission. New York: Oxford.

Yaschine, A. Á.-B. (2003). Origen de las células madre del sistema nervioso central. Plasticidad y aprendizaje en el sistema nervioso centra. El colegio Nacional.

Yuste, R. (1994). Desarrollo de la corteza cerebral. Investigación y Ciencia.

Zubiría, M. d. (1998). Pedagogías del siglo XXI: Mentefactos, el arte de pensar para enseñar y de enseñar para pensar. Bogotá: Gerardo Andrade Medina.

ANEXOS

Anexo 1: Uso del CORE de la aplicación

La aplicación permite establecer de forma rápida el diseño de una red neuronal, estimularla y entrenarla. Se hará un ejemplo para construir y entrenar una red neuronal de 3 capas que esté en condiciones de aprender la función XOR. La forma básica de creación de red se hace de la siguiente forma:

RedNeuronal red = new RedNeuronal();

red.agregarCapa(new Capa(2, FuncionDeTransferencia.LINEAL), Capa.TipoDeCapa.ENTRADA);

red.agregarCapa(new Capa(3, FuncionDeTransferencia.LOG_SIGMOIDAL), Capa.TipoDeCapa.OCULTA);

red.agregarCapa(new Capa(1, FuncionDeTransferencia.LOG_SIGMOIDAL), Capa.TipoDeCapa.SALIDA);

red.conectarTodaLaRed(2, true);

Este código crea una red, a la cual se le agregan 3 capas: 1 de entrada con 2 neuronas con función de transferencia lineal, 1 oculta con 3 neuronas con función de transferencia logarítmica sigmoidal y 1 de salida con 1 neurona con función de transferencia logarítmica sigmoidal.

Por último se conecta toda la red, donde true indica que se desean valores aleatorios entre [-2, 2], de lo contrario todos los pesos quedarían con valor 2, en caso que se quiera un único valor.

Una vez construida la red se define un entrenador de la red, que para este caso es un entrenamiento con Backpropagation:

Entrenador entrenador = new Backpropagation(red);

entrenador.setEscuchaEntrenamiento(this);

El escucha se establece para que la clase sea notificada de los eventos correspondientes, como el inicio del entrenamiento, el fin de un ciclo y el final del entrenamiento.

Finalmente se asignan los patrones de entrenamiento con las salidas deseadas y se da inicio al proceso de entrenamiento con los parámetros básicos: patrones de entrada, salidas deseadas, factor de aprendizaje, cantidad máxima de iteraciones y error mínimo.

Lector lector = new LectorDeArchivo();

lector.obtenerDatosDelArchivo(new File(this.getClass().getResource(“XOR.txt”).getPath()));

entrenador.entrenarRed(lector.getPatrones(), lector.getSalidasDeseadas(), 0.4, 100, 1E-8);

La clase lector lee el formato del archivo XOR.txt y permite obtener los patrones de entrada y salidas deseadas:


El método entrenar red inicia el entrenamiento de la red.

El código completo funcional para este caso, con un ejemplo de posibles notificaciones es el siguiente:

public
class EntrenadorXOR implements EscuchaEntrenamiento {

private
long
nanos = 0;

public EntrenadorXOR() {

RedNeuronal red = new RedNeuronal();

red.agregarCapa(new Capa(2, FuncionDeTransferencia.LINEAL), Capa.TipoDeCapa.ENTRADA);

red.agregarCapa(new Capa(3, FuncionDeTransferencia.LOG_SIGMOIDAL), Capa.TipoDeCapa.OCULTA);

red.agregarCapa(new Capa(1, FuncionDeTransferencia.LOG_SIGMOIDAL), Capa.TipoDeCapa.SALIDA);

red.conectarTodaLaRed(2, true);

Entrenador entrenador = new Backpropagation(red);

entrenador.setEscuchaEntrenamiento(this);

Lector lector = new LectorDeArchivo();

lector.obtenerDatosDelArchivo(new File(this.getClass().getResource(“XOR.txt”).getPath()));

entrenador.entrenarRed(lector.getPatrones(), lector.getSalidasDeseadas(), 0.4, 4000, 1E-8);

}

public
static
void main(String[] args) {

new EntrenadorXOR();

}


@Override

public
void cicloTermino(EventoEntrenamiento eventoEntrenamiento) {


}

@Override

public
void entrenamientoInicio(EventoEntrenamiento eventoEntrenamiento) {

eventoEntrenamiento.mostrarDiseñoDeLaRed();

System.out.println(“Salida antes de entrenar”);

    eventoEntrenamiento.mostrarSalidaDeLaRed();

    nanos = System.nanoTime();

}

@Override

public
void entrenamientoTermino(EventoEntrenamiento eventoEntrenamiento) {

    long delay = System.nanoTime() – nanos;

    System.out.println(“trainning finished after “ + delay + ” despues de “

        + eventoEntrenamiento.getCicloActual() + ” ciclos” + “\n\n” );

    System.out.println(“Salida después de entrenamiento”);

    eventoEntrenamiento.mostrarSalidaDeLaRed();

}

}

Se debe tener en cuenta que el usuario puede querer escuchar cualquier evento descrito en la iteración 7, en este caso solo se desea ser notificado de los eventos del entrenamiento, cuando inicie y termine el entrenamiento, la información establecida aparecerá en la consola de salida.

Anexo 2: Uso de la GUI de la aplicación

Los componentes principales de la GUI se definen en una barra de menú de servicios que permiten al usuario cumplir con todos los requerimientos establecidos en la definición del proyecto.

Menú:

El menú contiene los siguientes servicios:


A continuación se muestra una descripción general de cada servicio y elementos importantes que sean de destacar.

Crear red:

Se presentan las opciones para crear una red de determinado tipo: perceptrón multicapa o asociativa (para esta versión); y con un número de capas determinado por el usuario.


Al iniciar la aplicación solo este botón y el de Ayuda aparecen activos, al crear la red se activan todos los demás servicios.

Crear neurona:

Se dan las opciones básicas para la creación de neurona como la capa en la que estará ubicada la neurona, la función de transferencia y el valor umbral (denominado bias generalmente en las aplicaciones de RNA).


El programa se encarga de mostrar solo las opciones que apliquen para ese tipo de red. Por ejemplo, si se definió una red de 3 capas solo es posible ubicar la neurona en una de esas 3 capas.

Conectar neuronas:

Permite establecer una sinapsis entre dos neuronas. No existen restricciones sobre la forma de conectar las neuronas, pueden haber conexiones de neuronas de la misma capa o incluso a sí mismas.


Conectar red:

Conecta todas las neuronas de capas distintas que no estén conectadas. Se solicita al usuario un valor X para que los pesos de las conexiones estén entre [-x, x].


El resultado es el siguiente, neuronas conectadas con pesos entre [-2, 2]:


Borrar elemento:

Permite borrar una neurona o una sinapsis, en caso de borrarse una neurona se borra todas las conexiones presinápticas y postsinápticas asociadas a ella.

Estimular red:

Permite conocer la salida de una red con la configuración actual, ante un conjunto de patrones de entrada presentados, se escoge el archivo con el formato establecido tal como se mostró en el prototipo 1. El archivo que se presenta contiene los datos para la función lógica XOR y es el siguiente:


La salida resultante es:


Las salidas se muestran para cada patrón.

Entrenar la red:

Permite definir las opciones para entrenamiento de una red como el tipo de entrenamiento, el factor de aprendizaje, el máximo número de iteraciones, el error máximo permitido (si el error en una época de entrenamiento está por debajo de este valor el entrenamiento se considera exitoso) y el archivo fuente que contiene los patrones de entrenamiento. En este caso se usa el mismo archivo.


La salida resultante al dar click sobre el botón aceptar es la siguiente:


Cuando terminan las iteraciones se muestra el error resultante y las salidas para cada patrón. Además se muestra la nueva configuración de la red con los valores de los pesos y los bias que crean el patrón correspondiente para la función XOR.

Si se implementa un modelo con neurogénesis se mostrarán las nuevas neuronas y conexiones si es necesario.

Anexo 3: Pruebas de rendimiento

A continuación se muestran los datos obtenidos en las pruebas realizadas para tiempo de procesamiento, en negrita se muestra el promedio de los datos. Los tiempos listados se manejan en nanosegundos (ns):



La razón está dada por el promedio de JOONE sobre el promedio del modelo propuesto, para el último caso, índica que el tiempo de JOONE para resolver el problema OR con una red de 2 neuronas de entrada y una de salida, fue en promedio 4 veces mayor al tiempo de procesamiento del modelo propuesto.

La media de las 3 razones aquí halladas es 3.78892, el valor de referente identificado en el documento. Sin embargo es evidente que es necesario realizar una mayor cantidad de pruebas para establecer valores promedio con menor varianza, si bien para el caso del procesamiento, no es muy alta.

Para el caso de convergencia del error se muestran los datos obtenidos donde los valores listados indican el valor de error medio cuadrático de la red, calculado como la raíz de los cuadrados del error de los patrones. Los valores en negrita muestran nuevamente el valor promedio para cada caso en cada tipo de prueba concreta que se desarrolló.



En este caso se decidió que las pruebas no eran concluyentes debido a que OONE maneja un formato de inicialización de pesos que no es controlado por el usuario y por defecto. En el caso de la aplicación desarrollada el usuario puede definir ciertos rasgos de inicialización de parámetros, lo que hace en muchos casos mejorar la convergencia como se evidencia en la última tabla.

Anuncios

Un comentario en “PROTOTIPO DE UNA RED NEURONAL ARTIFICIAL CON ARQUITECTURA DINÁMICA BASADA EN EL PROCESO DE NEUROGÉNESIS DE REDES NEURONALES MADURAS

  1. Pingback: Planteamiento de una red neuronal artificial basado en la neuro-génesis de redes neuronales biológicas | Aprendiendo de la vida

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s