martes, 10 de mayo de 2011



CATEDRA:
Base de Conocimiento
Trabajo de :
Redes Neuronales

Integrantes:
Cristian Acurio
David Chaguay
Litzy García A
Gladys Santos.
Diana Pereira

CURSO:
IX  De Ingenieria  de Sistemas

CATEDRATICO:
Ing.  Fernando Mejía
AÑO:
2011


QUE ES UNA RED NEURONAL

Introducción

El cerebro humano es el sistema de cálculo más complejo que conoce el hombre.
El ordenador y el hombre realizan bien diferentes clases de tareas; así la operación de reconocer el rostro de una persona resulta una tarea relativamente sencilla para el hombre y difícil para el ordenador. La capacidad del cerebro humano de pensar, recordar y resolver problemas ha inspirado a muchos científicos intentar o procurar modelar en el ordenador el funcionamiento del cerebro humano.
Un grupo de investigadores ha perseguido la creación de un modelo en el ordenador que iguale o adopte las distintas funciones básicas del cerebro. El resultado ha sido una nueva tecnología llamada Computación Neuronal o también Redes Neuronales Artificiales.

DEFINICIÓN DE RED NEURONAL

Una red neuronal es un procesador paralelo masivamente distribuido que tiene una facilidad natural para el almacenamiento de conocimiento obtenido de la experiencia para luego hacerlo utilizable. Se parece al cerebro en dos aspectos:

1. El conocimiento es obtenido por la red a través de un proceso de aprendizaje.
2.  Las conexiones interneuronales conocidas como pesos sinápticos son utilizadas para almacenar dicho conocimiento.
Las redes neuronales artificiales han sido desarrolladas como generalizaciones de modelos matemáticos del conocimiento humano o de la biología neuronal, con base en los siguientes considerandos :

1. El procesamiento de información se realiza en muchos elementos simples llamados neuronas
2. Las señales son pasadas entre neuronas a través de enlaces de conexión
3. Cada enlace de conexión tiene un peso asociado, el cual, en una red neuronal típica, multiplica la señal transmitida.
4. Cada neurona aplica una función de activación (usualmente no lineal) a las entradas de la red (suma de las señales de entrada pesadas) para determinar su señal de salida.
Su más importante ventaja es la de resolver problemas que son muy complejos para tecnologías convencionales, problemas que no tienen una solución determinística o para los cuales una solución determinística es muy complicado encontrarla. En general, por ser una abstracción del cerebro biológico, las RNA son buenas para resolver aquellos problemas que las personas resuelven adecuadamente, pero que los computadores no. Estos problemas, entre otros, incluyen reconocimiento de patrones y problemas de pronóstico (los cuales requieren el reconocimiento de una tendencia en unos datos).
NEURONA BIOLOGICA
Una neurona es una célula viva, y como tal, contiene los mismos elementos que forman parte de todas las células biológicas, además, de poseer elementos característicos que la diferencian. En general una neurona consta de un cuerpo celular más o menos esférico de 5 a 10 micras de diámetro, del que sale una rama principal el axón, y varias ramas más cortas denominadas dendritas. A su vez el axón puede producir ramas en torno a su punto de arranque, y con frecuencia se ramifica extensamente cerca de su extremo.
 
 Esquema de una neurona biológica
Una características que diferencian a las neuronas del resto de células vivas, es su capacidad de comunicarse. En términos generales, las dendritas y el cuerpo celular reciben señales de entrada, el cuerpo celular las combina e integra y emite señales de salida. El axón transporta esas señales a los terminales axónicos, que se encargan de distribuir información a un  nuevo conjunto de neuronas. Por lo general una neurona recibe información de miles de otras neuronas y, a su vez, envía información a miles de neuronas más. Se calcula que en el cerebro humano existen del orden de 10 a la 15 conexiones.

<>
En resumen y simplificando mucho todo el tema a lo que nosotros necesitamos saber, podríamos decir que la información en el celebro se transmite mediante impulsos eléctricos, que viajan por las neuronas biológicas y por señales químicas que comunican las neuronas con otras neuronas en sus bordes usando unas estructuras llamadas sinapsis.
<><><><><><><><><><><><><><><><><><><><>
Característica
Computador secuencial
Sistema biológico neuronal
Unidad de Procesamiento
Compleja, Veloz, Unica
Simple, Lenta, Muchas
Memoria
Separada del procesador, Localizada
Integrada dentro del procesador, Distribuida, Direccionable por contenido
Procesamiento de los Datos
Centralizado, Secuencial, Programas almacenados
Distribuido ,Paralelo, Auto aprendizaje
Confiabilidad
Muy vulnerable
Robusto
Especialización
Manipulaciones simbólicas y numéricas
Problemas perceptuales
Ambiente de operación
Bien definido, Muy restringido
Pobremente definido, Sin restricciones


LA NEURONA ARTIFICIAL
Cualquier modelo de red neuronal consta de dispositivos elementales de procesamiento: las neuronas. A partir de ellas, se pueden generar representaciones específicas, de tal forma que un estado conjunto de ellas pueda significar una letra, un número o cualquier otro objeto. Generalmente se pueden encontrar tres tipos de neuronas:
1. Aquellas que reciben estímulos externos, relacionas con el aparato sensorial, que tomarán la información de la entrada, denominadas unidades de entrada.

2. Dicha información se transmite a ciertos elementos internos que se ocupan de su proceso. Es la sinapsis y neuronas correspondientes a este segundo nivel donde se genera cualquier tipo de representación interna de la información. Puesto que no tienen relación directa con la información de entrada y de salida. Se llaman unidades.
 3. Una vez ha finalizado el periodo de procesado, la información llega a las unidades de salida, cuya misión es dar la respuesta del sistema.
La tecnología basada en redes neuronales artificiales es de caracter bio-inspirado pues su funcionamiento trata de imitar el funcionamiento de elementos biologicos que en este caso los constituyen las neuronas del cerebro. En la figura 2 se ilustra una neurona artificial
Caracteristicas de las redes neuranales.

 Las Redes Neuronales Artificiales, ANN (Artificial Neural Networks) están inspiradas en las redes neuronales biológicas del cerebro humano. Están constituidas por elementos que se comportan de forma similar a la neurona biológica en sus funciones más comunes. Estos elementos están organizados de una forma parecida a la que presenta el cerebro humano.

Las ANN al margen de "parecerse" al cerebro presentan una serie de características propias del cerebro. Por ejemplo las ANN aprenden de la experiencia, generalizan de ejemplos previos a ejemplos nuevos y abstraen las características principales de una serie de datos.

Aprender: adquirir el conocimiento de una cosa por medio del estudio, ejercicio
o experiencia. Las ANN pueden cambiar su comportamiento en función del entorno. Se les muestra un conjunto de entradas y ellas mismas se ajustan para producir unas salidas consistentes.
Generalizar: extender o ampliar una cosa. Las ANN generalizan
automáticamente debido a su propia estructura y naturaleza. Estas redes pueden ofrecer, dentro de un margen, respuestas correctas a entradas que presentan pequeñas variaciones debido a los efectos de ruido o distorsión.
Abstraer: aislar mentalmente o considerar por separado las cualidades de un
objeto. Algunas ANN son capaces de abstraer la esencia de un conjunto de entradas que aparentemente no presentan aspectos comunes o relativos.
Estructura básica de una red neuronal

Analogía con el cerebro.
La neurona es la unidad fundamental del sistema nervioso y en particular del cerebro.
Cada neurona es una simple unidad procesadora que recibe y combina señales desde y hacia otras neuronas. Si la combinación de entradas es suficientemente fuerte la salida de la neurona se activa.

El cerebro consiste en uno o varios billones de neuronas densamente interconectadas.
El axón (salida) de la neurona se ramifica y está conectada a las dendritas (entradas) de otras neuronas a través de uniones llamadas sinapsis. La eficacia de la sinapsis es modificable durante el proceso de aprendizaje de la red.

Redes Neuronales Artificiales

En las Redes Neuronales Artificiales, ANN, la unidad análoga a la neurona biológica es el elemento procesador,PE (process element). Un elemento procesador tiene varias entradas y las combina, normalmente con una suma básica. La suma de las entradas es modificada por una función de transferencia y el valor de la salida de esta función de transferencia se pasa directamente a la salida del elemento procesador.
La salida del PE se puede conectar a las entradas de otras neuronas artificiales (PE)
mediante conexiones ponderadas correspondientes a la eficacia de la sinapsis de las conexiones neuronales.
Una red neuronal consiste en un conjunto de unidades elementales PE conectadas de una forma concreta. El interés de las ANN no reside sólamente en el modelo del
elemento PE sino en las formas en que se conectan estos elementos procesadores.
Generalmente los elementos PE están organizados en grupos llamados niveles o capas.
Una red típica consiste en una secuencia de capas con conexiones entre capas
adyacentes consecutivas.
Existen dos capas con conexiones con el mundo exterior. Una capa de entrada, buffer de entrada, donde se presentan los datos a la red, y una capa buffer de salida que mantiene la respuesta de la red a una entrada. El resto de las capas reciben el nombre de capas ocultas.

Computación tradicional y computación neuronal

Programación/Entrenamiento.-
Las técnicas tradicionales de programación utilizadas para la solución de un problema requieren la creación de un algoritmo. Un algoritmo consiste en una secuencia de instrucciones que indica el modo en el que debe proceder el sistema basado en un ordenador para lograr el fin perseguido que es la resolución del problema.
El diseño de una secuencia de instrucciones para resolver un problema de contabilidad es relativamente sencillo, mientras que existen muchos problemas del mundo real en los que resulta difícil realizar un algoritmo que resuelva dichos problemas. Por ejemplo imaginemos desarrollar un programa para cualquiera de los problemas de reconocimiento de imágenes como el rostro de una persona. Hay muchas variaciones de la imagen de una persona, como que presente un rostro serio o un rostro alegre, variaciones en general que deben tenerse en cuenta a la hora de diseñar el algoritmo.

Arquitectura.-
Las ANN presentan una arquitectura totalmente diferente de los ordenadores
tradicionales de un único procesador. Las máquinas tradicionales basadas en el modelo de Von Neuman tienen un único elemento procesador, la CPU (Control Process Unit) que realiza todos los cálculos ejecutando todas las instrucciones de la secuencia programada en el algoritmo. Cualquier CPU realiza más de cien comandos básicos, incluyendo sumas, restas, y desplazamientos entre otros.
Los comandos o instrucciones se ejecutan secuencialmente y sincronizadas con el reloj del sistema. Sin embargo en los sistemas de computación neuronal cada elemento PE sólo puede realizar uno, o como mucho, varios cálculos. La potencia del procesado de las ANN se mide principalmente por el número de interconexiones actualizadas por segundo durante el proceso de entrenamiento o aprendizaje. Sin embargo las máquinas de Von Neuman se miden por el número de instrucciones que ejecuta por segundo el procesador central CPU.
La arquitectura de las ANN parte de la organización de los sistemas de procesado en paralelo, es decir, sistemas en los que distintos procesadores están interconectados. No  obstante los procesadores son unidades procesadoras simples, diseñadas para la suma de muchas entradas y con un ajuste automático de las conexiones ponderadas.

Historia de la computación neuronal

En 1943, el neurobiólogo Warren McCulloch, y el estadístico Walter Pitss, publicaron el artículo "A logical calculus of Ideas Imminent in Nervous Activity". Este artículo constituyó la base y el inicio del desarrollo en diferentes campos como son los Ordenadores Digitales (John Von Neuman), la Inteligencia Artificial (Marvin Minsky con los Sistemas Expertos) y el funcionamieto del ojo (Frank Rosenblatt con la famosa red llamada Perceptron).
En 1956, los pioneros de la Inteligencia Artificial, Minsky, McCarthy, Rochester,
Shanon, organizaron la primera conferencia de Inteligencia Artificial que fue
patrocinada por la Fundación Rochester. Esta conferencia se celebró en el verano de 1956 en la localidad inglesa de Darmouth y en muchos libros se hace referencia al verano de este año como la primera toma de contacto seria con las redes neuronales artificiales.
Nathaural Rochester del equipo de investigación de IBM presentó el modelo de una red neuronal que él mismo realizó y puede considerarse como el primer software de simulación de redes neuronales artificiales.
En 1957, Frank Rosenblatt publicó el mayor trabajo de investigación en computación neuronal realizado hasta esas fechas. Su trabajo consistía en el desarrollo de un elemento llamado "Perceptron".

Implementacion y tecnologías emergentes

El resurgimiento de la computación neuronal en los últimos años se ha producido por el desarrollo teórico de nuevos modelos matemáticos del comportamiento del cerebro y por el desarrollo de nuevas tecnologías que ya están siendo utilizadas en una gran variedad de aplicaciones comerciales.
Entre los avances o desarrollos tecnológicos que permiten la realización de la
computación neuronal destacan los programas software de simulación, los aceleradores hardware, los chips de silicio y los procesadores ópticos.
Simuladores Software: constituyen una de las formas más versátiles con las que
se pueden implementar redes neuronales. Estos programas constituyen todo un sistema de desarrollo y realización de prototipos de redes neuronales. Estos programas se Introducción a la Computación Neuronal
utilizan para diseñar, construir, entrenar y probar redes neuronales artificiales para resolver problemas complejos y problemas del mundo real.
Los primeros simuladores software se ejecutaban en ordenadores de grandes
prestaciones y el avance de los ordenadores personales en capacidad de procesado y  capacidad de memoria hace posible que exista una serie de simuladores software de grandes prestaciones que corren sobre ordenadores personales. Entre otros paquetes software se incluye Neural Works, Neuralyst, Explore Net y Kwowledge Net.
Aceleradores Hardware: la naturaleza paralela de la computación neuronal se
presta a realizar diseños concretos y a medida de dispositivos físicos, aceleradores
hardware, que aceleren la ejecución de los cálculos. Los aceleradores hardware para los sistemas de computación neuronal son dispositivos físicos constituidos por diferentes procesadores interconectados que ayudan a la realización y ejecución del comportamiento de las ANN. Una de las ventajas de los aceleradores hardware diseñados específicamente para la computación neuronal es el aumento de la velocidad de procesado. Esta característica permite la utilización de las ANN en aplicaciones de tiempo real.
Robert Hecht-Nielsen desarrolló el acelerador hardware Mark III que constaba de 8100 procesadores y trabajaba como un periférico de un VAX. La mayoría de las casas comerciales dedicadas al diseño de las ANN han desarrollado diferentes tarjetas basadas en los diferentes procesadores existentes, diseñadas para trabajar en el entorno de un ordenador personal PC y presentando un progresivo ratio de actualizaciones de interconexiones por segundo.
Chips de Silicio: Otro de los campos de la investigación en el mundo de las
ANN al margen de los simuladores software y aceleradores hardware, es la integración de todos los componentes de computación neuronal en un chip de silicio. Un ejemplo concreto es el chip Electronic Neural Network (EEN) de la compañía AT&T que contiene 256 transistores-neuronas y más de 100.000 resistencias-sinapsis. Actualmente este chip está siendo utilizado para aplicaciones de compresión del ancho de banda de imágenes de vídeo para poder ser transmitidas por una línea telefónica. Existen muchas compañías y centros de investigación que están trabajando en el desarrollo de circuitos integrados que realizan computación neuronal. La mayoría de las aplicaciones de estos chips está siendo la simulación de procesos sensitivos como la visión de imágenes y la audición de sonidos.

2. Aplicación: ¿ Para qué son útiles ?

Esta tecnología es muy útil en unos pocos y muy especiales problemas. A grandes rasgos, estas aplicaciones son aquellas en las cuales se dispone de un registro de datos y nadie sabe exactamente la estructura y los parámetros que pudieran modelar el problema. En otras palabras, grandes cantidades de datos y mucha incertidumbre en cuanto a la manera de como estos son producidos.

Redes neuronales de una capa.

Cada una de las entradas está conectada a través de su peso correspondiente a cada neurona artificial. En la práctica existen conexiones eliminadas e incluso conexiones entre las salidas y entradas de las neuronas de una capa. No obstante la figura muestra una conectividad total por razones de generalización.

Normalmente las redes más complejas y más grandes ofrecen mejores prestaciones en el cálculo computacional que las redes simples. Las configuraciones de las redes construidas presentan aspectos muy diferentes pero tienen un aspecto común, el ordenamiento de las neuronas en capas o niveles imitando la estructura de capas que presenta el cerebro en algunas partes.


Redes neuronales multicapa

Las redes multicapa se forman con un grupo de capas simples en cascada. La salida de una capa es la entrada de la siguiente capa. Se ha demostrado que las redes multicapa presentan cualidades y aspectos por encima de las redes de una capa simple.

Conviene destacar que la mejora de las redes multicapa estriba en la función de
activación no lineal entre capas, pudiéndose llegar al caso de diseñar una red de una capa simple equivalente a una red multicapa si no se utiliza la función no lineal de activación entre capas.


Diseño: ¿Cómo se construyen ?
Pueden ser con salidas binarias, análogas o con codificación de pulsos (PCM). Es la unidad básica de procesamiento que se conecta a otras unidades a través de
conexiones sinápticas.
 La estructura de la red. La interconexión de los elementos básicos. 
Es la manera como las unidades básicas se interconectan.
CLASIFICACIÓN DE LAS REDES NEURONALES ARTIFICIALES
 SELECCIÓN DE LAS REDES NEURONALES
ARTIFICIALES
La clasificación de las redes neuronales artificiales es una simple descripción de las diferentes ANN más comunes y frecuentes en la mayoría de los simuladores software de sistemas de computación neuronal. La selección de una red se realiza en función de las características del problema a resolver. La mayoría de éstos se pueden clasificar en aplicaciones de Predicción, Clasificación, Asociación, Conceptualización, Filtrado y Optimización. Los tres primeros tipos de aplicaciones requieren un entrenamiento supervisado.






Adaline y Madaline                                              AÑO                TIPO
diseñador: Bernard Widrow                                 1960               Predicción
características: Técnicas de Adaptación para el Reconocimiento de Patrones.
Curso:

Back-Propagation
diseñador: Rumelhart y Parker                             1985               Clasificación
características: Solución a las limitaciones de su red predecesora el Perceptron.


The Boltzmann Machine
diseñador: Ackley, Hinton y Sejnowski                 1985              Asociación
características: Similar a la red Hopfield.
• Propagation
Hopfield Networks
diseñador: Hopfield                                                1982               Optimización
características: Concepto de la red en términos de energía.


Perceptron Networks
diseñador: Rosenblatt                                            1950              Predicción
características: Primer modelo de sistema Neuronal Artificial.


Learning Vector Quantization (LVQ) Networks
diseñador: Kohonen                                                           1988               Clasificación
características: Red Clasificadora.

ADALINE – MADALINE

La arquitectura de Adaline (Adaptive Linear Neuron) fue creada por Bernard Widrow
en 1959. Utiliza un dispositivo lógico que realiza una suma lineal de las entradas y
genera una función umbral para el resultado de dicha suma.
La arquitectura Madaline (Multilayer Adaline) creada también por Widrow presenta una configuración constituida por dos o más unidades Adaline.
A lo largo del tiempo se han estudiado diferentes variaciones de los algoritmos de
aprendizaje de la Adaline, y Madaline, y entre las aplicaciones investigadas destacan entre otras, filtros adaptativos de eliminación de ruido y reconocimiento de patrones de señales .
No obstante, desde los primeros experimentos con la Adaline y Madaline se constató la capacidad de clasificar patrones linealmente separables, presentando la misma limitación que el Perceptron: la carencia de un método que ajuste más de una capa de pesos.

ADALINE que por sus siglas en inglés significa ADAptive LINear Element es un dispositivo que consta de un solo elemento de procesamiento, por lo que técnicamente no es una red. Sin embargo es un elemento muy importante, ya que de él se derivan redes más complejas. En la siguiente figura se muestran los elementos de una ADALINE.
ADAptive LINear Element

Una ADALINE consiste de un ALC (Adaptive Linear Combiner) y un cuantizador (función bipolar de salida). Se alimenta con un vector de entrada (valores observados) y con una entrada constante igual a 1 denominada sesgo (bias). Posteriormente se efectúa una suma ponderada de los valores de entrada con sus pesos asociados; si el resultado es positivo, la salida del ADALINE es 1, en caso contrario es 0 (o -1). En consecuencia ADALINE sólo resuelve adecuadamente problemas binarios linealmente separables.

Algoritmo de Entrenamiento
El entrenamiento del ADALINE está basado en la regla LMS (Least Mean Square) que busca minimizar el error cuadrático medio por medio de la regla delta.
Dado un vector de entrada (x0, ..., xn) donde x0 =1, el correspondiente valor de pesos (w0, ..., wn) y el valor deseado de salida d, el error cuadrático es el siguiente:

El objetivo del método es minimizar dicho error mediante la modificación del vector de pesos (w0, ..., wn) sumándole un Dw de tal forma que nos acerquemos al error mínimo en la dirección del gradiente negativo, es decir, lo más rápidamente posible.

El procedimiento de derivación se presenta a continuación:
Por lo que el error local será reducido más rápidamente si se ajustan los pesos de acuerdo a la regla delta:
El algoritmo de entrenamiento se presenta a continuación:


1.Inicializar pesos (w1, ..., wn) y threshold (w0)

2.Presentar vector de entrada (x1,...,xn) y la salida deseada d(t)

3.Calcular la salida
4. Adaptar los pesos
donde 0 < i < n y es la tasa de aprendizaje
5. Repetir los pasos 2 a 4 hasta que las salidas reales y las deseadas sean iguales para todos los vectores del conjunto de entrenamiento .

Siguiendo este método se garantiza que, para un conjunto de entrenamiento adecuado, después de un número finito de iteraciones el error se reduce a niveles aceptables. El número de iteraciones necesarias y el nivel de error deseado depende de cada problema particular.

La principal aplicación de las redes ADALINE está en el campo del procesamiento de señales, en concreto, para el diseño y realización de filtros que eliminen el ruido en señales portadoras de información.
Se destaca su uso como filtros de ecuación adaptativos en módems de alta velocidad y canceladores adaptativos del eco para el filtrado de señales en comunicaciones telefónicas de larga distancia y comunicaciones vía satélite.
También se han utilizado para la eliminación del ruido materno de las grabaciones electrocardiográficas (ECG) del latido del corazón del feto humano.
Por otro lado los filtros adaptativos también se suelen utilizar para predecir el valor futuro de una señal a partir de su valor actual, basándose en un aprendizaje en el que se emplea como entrada el valor retardado de la señal actual(la señal en algún momento anterior), y como salida esperada, el valor actual de la señal. El filtro intentará minimizar el error entre su salida y la señal actual, basándose en una entrada que es el valor de la señal en algún instante anterior. Una vez que el filtro predice correctamente la señal actual, basándose en la señal anterior, se puede utilizar directamente la actual como entrada sin retardo. El filtro realizará una predicción del valor futuro de la señal.
MADALINE (Multiple ADAptive LINear Element)

Fue una de las primeras redes neuronales multicapa entrenable con múltiples elementos adaptivos.
Esta estructura fue diseñada después de ADALINE, para ir mas allá de la solución de problemas linealmente separables.

Consta de una capa de ADALINES y una función de mayoría cuya respuesta binaria depende de las respuestas de las ADALINES.

El algoritmo de entrenamiento es el siguiente.

1.Inicializar pesos (w1, ..., wn) y threshold (w0)
2.Presentar vector de entrada (x1,...,xn) y la salida deseada dk(t)

3.Calcular la salida

4.Determinar la salida del Madaline

M(t)=Fmayoría(yk(t))

5. Determinar el error y actualizar los pesos

Si M(t) = salida deseada no se actualizan

de otro modo, los elementos Adaline compiten y se actualiza el ganador, es decir al ADALINE con salida errónea mas cercana a cero en su salida original (y).

donde 0 < i < n y es la tasa de aprendizaje. c representa al Adaline ganador

6. Repetir los pasos 2 a 5 hasta que las salidas reales y las deseadas sean iguales para todos los vectores del conjunto de entrenamiento

Nótese que se utiliza la misma regla delta que en el entrenamiento de ADELINES , ya que los pesos modificados corresponden a estas últimas.

El inconveniente de la MADALINE es que el proceso de entrenamiento es muy lento pues se modifican una sola ADALINE en cada iteración.
 Backpropagation
El funcionamiento de la red backpropagartion (BPN) consiste en el aprendizaje de un conjunto predefinido de pares de entradas-salidas dados como ejemplo: primero se aplica un patrón de entrada como estímulo para la primera capa de las neuronas de la red, se va propagando a través de todas las capas superiores hasta generar una salida, se compara el resultado en las neuronas de salida con la salida que se desea obtener y se calcula un valor de error para cada neurona de salida. A continuación, éstos errores se transmiten hacia atrás, partiendo de la capa de salida hacia todas las neuronas de la capa intermedia que contribuyan directamente a la salida, recibiendo de error aproximado a la neurona intermedia a la salida original. Este proceso se repite, capa por capa, hasta que todas las neuronas de la red hayan recibido un error que describa su aportación relativa al error total. Basándose en el valor del error recibido, se reajustan los pesos de conexión de cada neurona, de manera que en la siguiente vez que se presente el mismo patrón, la más salida esté cercana a la deseada.
La importancia de la red backpropagation consiste en su capacidad de autoadaptar los pesos de las neuronas de las capas intermedias para aprender la relación que existe ente un conjunto de patrones de entrada y sus salidas correspondientes. Es importante la capacidad de generalización, facilidad de dar salidas satisfactorias a entradas que el sistema no ha visto nunca en su fase de entrenamiento. La red debe encontrar una representación interna que le permita generar las salidas deseadas cuando se le dan entradas de entrenamiento, y que pueda aplicar, además, a entradas no presentadas durante la etapa de aprendizaje para clasificarlas.

Back-propagation:

El método de back-propagation (o entrenamiento hacia atrás) es un sistema automático de entrenamiento de redes neuronales con capas ocultas, perfeccionado en la década de los 80.
En este tipo de redes, el problema a la hora de entrenarlas estriba en que sólo conocemos la salida de la red y la entrada, de forma que no se pueden ajustar los pesos sinápticos asociados a las neuronas de las capas ocultas, ya que no podemos inferir a partir del estado de la capa de salida como tiene que ser el estado de las capas ocultas.
 El sistema de entrenamiento mediante back-propagation consiste en:
  • Empezar con unos pesos sinápticos cualquiera (generalmente elegidos al azar).
  • Introducir unos datos de entrada (en la capa de entradas) elegidos al azar entre los datos de entrada que se van a usar para el entrenamiento.
  • Dejar que la red genere un vector de datos de salida (propagación hacia delante).
  • Comparar la salida generada por al red con la salida deseada.
  • La diferencia obtenida entre la salida generada y la deseada (denominada error) se usa para ajustar los pesos sinápticos de las neuronas de la capa de salidas.
  • El error se propaga hacia atrás (back-propagation), hacia la capa de neuronas anterior, y se usa para ajustar los pesos sinápticos en esta capa.
  • Se continua propagando el error hacia atrás y ajustando los pesos hasta que se alcance la capa de entradas.
 Este proceso se repetirá con los diferentes datos de entrenamiento.
 
El método por el cual el error es propagado hacia atrás fue descubierto por D.E. Rumelhart, G.E. Hinton y R.J. Williams en 1986, y casi al mismo al tiempo por Parker (1985) y Le Cun (1985). 

Máquina de Boltzmann

Una máquina de Boltzmann es un tipo de red neuronal recurrente estocástica. El nombre le fue dado por los investigadores Geoffrey Hinton y Terry Sejnowski. Las máquinas de Boltzmann pueden considerarse como la contrapartida estocástica y generativa de las redes de Hopfield. Fueron de los primeros tipos de redes neuronales capaces de aprender mediante representaciones internas, son capaces de representar y (con tiempo suficiente) resolver complicados problemas combinatorios. Sin embargo, debido a una serie de cuestiones que se abordan más adelante, las máquinas de Boltzmann sin restricciones de conectividad no han demostrado ser útiles para resolver los problemas que se dan en la práctica en el aprendizaje o inferencia de las máquinas. Aún así resultan interesantes en la teoría debido a la localización y a la naturaleza hebbiana de su algoritmo de entrenamiento, así como por su paralelismo y por la semejanza de su dinámica a fenómenos físicos sencillos. Si se limita la conectividad, el aprendizaje puede ser lo bastante eficaz como para ser útil en la resolución de problemas prácticos.
En mecánica estadística se denominan distribuciones de Boltzmann y son utilizadas en funciones de muestreo.
 Estructura
Las máquinas de Boltzmann, al igual que las redes de Hopfield, Poseen unidades con una "energía" definida para la red. También dispone de unidades binarias, pero a diferencia de las redes de Hopfield, las unidades de una máquina de Boltzmann son estocásticas. La energía global, E, en una máquina de Boltzmann es idéntica en forma a la de una red de Hopfield:
Donde:
  • wij es la fuerza de conexión entre la unidad j y la unidad i.
  • si es el estado, , de la unidad i.
  • θi es el umbral de la unidad i.
Las conexiones de una máquina de Boltzmann tienen dos limitaciones:
  • Ninguna unidad se conecta a sí misma.
  • . (Todas las conexiones son simétricas.)

Entrenamiento

Las unidades de la máquina de Boltzmann se dividen en unidades "visibles", V, y unidades "ocultas", H. Las primeras son las que recibirán información del "entorno", por ejemplo la serie de entrenamiento podría ser un conjunto de vectores binarios aplicado sobre las unidades V. La distribución en el conjunto de entrenamiento se denota P + (V).
En las máquinas de Boltzmann, como ya se ha dicho, la distribución de los estados globales convergen hasta un equilibrio termodinámico. Después de que marginalizar por encima de las unidades visibles V, la convergencia de la distribución se puede denotar como P (V).
Nuestro objetivo es aproximar la distribución "real" P + (V) a la expresión P (V), la cual es producida eventualmente por la máquina. Para medir la similitud entre las dos distribuciones se usa la divergencia de Kullback-Leibler, G:
Donde el sumatorio es superior a todos los posibles estados de V. G varía en función de los pesos, ya que estos determinan la energía de un estado, y la energía a su vez determina P (v), según la distribución de Boltzmann. Por lo tanto, podemos utilizar un algoritmo de descenso de gradiente sobre G para un peso determinado, wij, que se cambiará restando la derivada parcial de G con respecto al peso.
El entrenamiento de una máquina de Boltzmann consta de dos fases, que se van cambiando iterativamente entre ellas. Una es la fase "positiva" en que los estados de las unidades visibles se sujetan a un vector de estado binario particular, muestra del conjunto de entrenamiento (de acuerdo a P + ). La otra es la fase "negativa", en la que a la red se le permite ejecutarse libremente, es decir, los estados de las unidades no están determinados por datos externos. Sorprendentemente, el gradiente con respecto a un peso determinado, wij, está dado por una ecuación muy sencilla (demostrada por Ackley et al.):
Donde:
  • es la probabilidad de que tanto las unidades i como j estén activadas cuando la máquina esté en equilibrio durante la fase positiva.
  • es la probabilidad de que tanto las unidades i como j estén activadas cuando la máquina esté en equilibrio durante la fase negativa.
  • R denota la tasa de aprendizaje.
Este resultado se deduce del hecho de que en el equilibrio termodinámico la probabilidad P (s) de cualquier estado global s cuando la red está funcionando libremente viene dada por la distribución de Boltzmann (de ahí el nombre de "máquina de Boltzmann").
Sorprendentemente, esta regla de aprendizaje es bastante plausible desde el punto de vista biológico por el hecho de que la única información necesaria para cambiar los pesos es proporcionada de forma "local". Es decir, la conexión (o sinapsis usando terminología biológica) no necesita más información que la que suministran las dos neuronas que conecta. Esto es mucho más realista biológicamente hablando que lo que sucede con la información que necesitan muchos otros algoritmos de entrenamiento de redes neuronales, como por ejemplo el de retropropagación.
En el entrenamiendo de una máquina de Boltzmann no se utiliza el algoritmo EM, muy utilizado en Aprendizaje automático. Minimizar la divergencia KL, es equivalente a maximizar el logaritmo de la verosimilitud de los datos. Por lo tanto, el procedimiento de entrenamiento lleva a cabo un gradiente de ascenso sobre el logaritmo de verosimilitud de los datos observados. Esto contrasta con el algoritmo EM, donde la distribución posterior de los nodos ocultos debe ser calculada antes de la maximización de la verosimilitud llevada a cabo en el paso M.
En entrenamiento de sesgos es similar, pero usa sólo la actividad de un solo nodo:

Problemas en la aplicación práctica

Las máquinas de Boltzmann presentan un grave problema práctico, y es que el aprendizaje parece dejar de producirse correctamente cuando la máquina se amplía a algo más grande que una máquina trivial. Esto se debe a una serie de efectos, los más importantes de los cuales son:
  • El tiempo que la máquina necesita para recopilar las estadísticas de equilibrio crece exponencialmente con el tamaño de la máquina, y con la magnitud de la fuerza de las conexiones.
  • La fuerzas de las conexiones son más flexibles cuando las unidades conectadas tienen probabilidades de activación intermedias entre cero y uno, llevando a la llamada trampa de varianza. El efecto neto es que el ruido hace que las fuerzas de las conexiones se vuelvan aleatorias hasta que las actividades se saturan.
Perceptron
·         Para este caso, la neurona se representa como un sumador lineal, donde los operadores son los estímulos externos, seguido de una función F, que sería la función de activación. En la figura se muestra el modelo gráfico de este tipo: Como se puede observar, para este caso cada entrada es multiplicada por un peso W y los resultados son sumados, siendo comparados contra un valor de umbral, si el resultado es mayor este se activa.El  Perceptrón consta de tres tipos:·
·         Perceptrón Unicapa:
·         conjunto de neuronas conectadas entre sí, las cuales producirán una salida individual. Este, presenta tres formas de aprendizaje: Supervisado: se presenta al sistema unas entradas las cuales corresponderán a la salidaque se requiera que aprenda, permitiendo que la red calcule la salida para estas entradas,luego de conocer el error que comete, ajusta los pesos para que con una nueva entradano continúe este error.No Supervisado: únicamente se presenta la entrada y, en base a esta, emite una salida.Por Refuerzo: en este caso, se combinan los tipos de aprendizaje tanto supervisadoscomo no supervisados y continuamente se presenta a la red un estudio de cómo lo hace.·
·         Perceptrón Multicapa:
·         como su nombre lo indica, se trata de dos o más perceptrones unicapa conectados en cascada.El entrenamiento de un perceptrón es por medio de la regla de aprendizaje delta:Para cada peso W se realiza un ajuste dW según la regla: dW = LR ( T - Y ) XDonde LR es la razón de aprendizaje, T el valor deseado, Y el valor obtenido, y X la entrada aplicada al perceptrón. Limitantes El perceptrón es capaz tan sólo de resolver funciones definidas por un hiperplano(objeto de dimensión N-1 contenida en un espacio de dimensión N). que corte un espacio de dimensión N. Un ejemplo de una función que no puede ser resuelta es el operador lógico XOR.
·         Aplicaciones del perceptrón El rango de tareas que el Perceptrón puede manejar es mucho mayor que simples decisiones y reconocimiento de patrones. Por ejemplo, se puede entrenar una red para formar el tiempo pasado de los verbos en ingles, leer texto en ingles y manuscrito. El Perceptrón multicapa  (MLP)  puede ser usado para la predicción de una serie de datos en el tiempo; tal ha sido su  éxito en la medición de  la demanda de gas y electricidad, además de la predicción de cambios en el valor de los instrumentos financieros. Predicción de mercados financieros, diagnósticos médicos, el Perceptrón como una redcodificadora, el Perceptrón aprende a sumar enteros.NETtalk es un Perceptrón que es capaz de transformar texto en ingles en sonido individual (representaciones fonéticas) y la pronunciación con la utilización de un sintetizador de voz; cuenta con aproximadamente 300 nodos de neuronas (siendo 80 en la capa escondida)  y 20,000 conexiones individuales.

La Red de Hopfield.
·         La red de Hopfield es una de las redes unicapas más importantes y ha influido en el desarrollo de multitud de redes posteriores.
Es una red autoasociativa no lineal que fue desarrollada por Hopfield en 1982 basándose en los modelos de redes de McCulloch y Pitts y los símiles de los campos magnéticos con spin de Amit, Gutfreund, & Sompolinsky.
·          
Arquitectura de la red de hopfield
·         La red de Hopfield es una red monocapa, esto es, de una sola capa. Aunque también se puede mostrar como una red bicapa de dos capas, la primera capa seria una capa de sensores y la segunda capa será la capa donde se realiza el procesamiento.
·         En la versión bicapa la manera de interconexionar ambas capas es unir la primera capa a la segunda linealmente, esto es cada neurona con su respectiva, y después unir todas las neuronas con todas en la misma capa.
·         La red de Hopfield toma valores bipolares esto es, {-1,1}, sin embargo se pueden usar también valores binarios {0,1}.
·         Entonces

POTi = SumatorioEnj(Pij*Ej)
·         Y el estado de la neurona y la función de salida es la función signo
·         Si los valores de entrada fuesen binarios deberíamos usar la función escalón en vez de la función signo.
·         El potencial se calcula de la misma manera que en el caso bipolar

LVQ o Red  de KOHONEN
Existen evidencias que demuestran que en el cerebro existen neuronas que se organizan en muchas zonas, de forma que las informaciones captadas del entorno a través de los órganos sensoriales se representan internamente en forma de capas bidimensionales. Por ejemplo, en el sistema visual se han detectado mapas del espacio visual en zonas de córtex (capa externa del cerebro). También en el sistema auditivo se detecta organización según la frecuencia a la que cada neurona alcanza la mayor respuesta (organización tonotópica).
Aunque en gran medida esta organización neuronal está predeterminada genéticamente, es probable que de ella se origine mediante el aprendizaje. Esto sugiere, por tanto, que el cerebro podría poseer la capacidad inherente de formar mapas topológicos de las informaciones recibidas del exterior. De hecho, esta teoría podría explicar su poder de operar con elementos semánticos: algunas áreas del cerebro simplemente podrían crear y ordenar neuronas especializadas o grupos con características de alto nivel y sus combinaciones. Se trataría, en definitiva, de construir mapas espaciales para atributos y características.
A partir de estas ideas, T. Kohonen presentó en 1982 un sistema con un comportamiento semejante. Se trataba de un modelo de red neuronal con capacidad para formar mapas de características de manera similar a como ocurre en el cerebro.
El objetivo de Kohonen era demostrar que en un estímulo externo (información de entrada) por si solo, suponiendo una estructura propia y una descripción funcional del comportamiento de la red, era suficiente para forzar la formacion de mapas.
Este modelo tiene dos variantes, denominadas LVQ (Learning Vector Quantization) y TPM (Topology-Preserving Map) o SOM (Self-Organizating Map). Ambas se basan en el principio de formación de mapas topológicos para establecer características comunes entre las informaciones (vectores) de entrada a la red, aunque difieren en las dimensiones de éstos, siendo de una sola dimensión en el caso de  LVQ, y bidimensional, e incluso tridimensional, en la red TPM.

Características

Pertenece a la categoría de las redes competitivas o mapas de auto organización, es decir, aprendizaje no supervisado. Poseen una arquitectura de dos capas (entrada-salida) (una sola capa de conexiones), funciones de activación lineales y flujo de información unidireccional (son redes en cascada).
Las unidades de entrada reciben datos continuos normalizados, se normalizan así mismo los pesos de las conexiones con la capa de salida. Tras el aprendizaje de la red, cada patrón de entrada activará una única unidad de salida.
El objetivo de este tipo de redes es clasificar los patrones de entrada en grupos de características similares, de manera que cada grupo activará siempre la(s) misma(s) salida(s). Cada grupo de entradas queda representado en los pesos de las conexiones de la unidad de salida triunfante. La unidad de salida ganadora para cada grupo de entradas no se conoce previamente, es necesario averiguarlo después de entrenar a la red.

Arquitectura

En la arquitectura de la versión original (LVQ) del modelo Kohonen no existen conexiones hacia atrás. Se trata de una de las N neuronas entrada y M de salida. Cada una de las N neuronas de entrada se conecta a las M de salida a través de conexiones hacia adelante (feedfoward).
Entre las neuronas de la capa de salida, puede decirse que existen conexiones laterales de inhibición (peso negativo) implícitas, pues aunque no estén conectadas, cada una de las neuronas va a tener cierta influencia sobre sus vecinas. El valor que se asigne a los pesos de las conexiones hacia adelante entre las capas de entrada y salida (Wji) durante el proceso de aprendizaje de la red va a depender precisamente de esta interacción lateral.
La influencia que una neurona ejerce sobre las demás es función de la distancia entre ellas, siendo muy pequeñas cuando están muy alejadas. Es frecuente que dicha influencia tenga la forma de un sombrero mexicano.
Por otra parte, la versión del modelo denominada TPM (Topology Preserving Map) trata de establecer una correspondencia entre los datos de entrada y un espacio bidimensional de salida, crenado mapas topológicos de dos dimensiones, de tal forma que ante datos de entrada con características comunes se deben activar neuronas situadas en próximas zonas de la capa de salida.

Aplicación

Una vez entrenada, podemos usar a la red para clasificar patrones de entrada similares en el espacio n-dimensional. Una clase o grupo de patrones similares tiende a controlar una neurona específica, que representará el centro de una esfera n-dimensional (de radio unitario, pues normalizamos los datos sobre la unidad). Esa neurona resultará la más activada frente a los patrones más parecidos a su vector de pesos.
Después del aprendizaje, la clasificación consiste en presentar una entrada y seleccionar la unidad más activada. Además, el vector de pesos nos servirá para reconstruir el patrón de entrada.