English  Español  Português  Français  Italiano  Deutsch  Nederlands  Svenska  Dansk  Suomi  Norsk  Русский  Polski  Română  Български  Hrvatski  Česky  中国  中國  日本語  한국어  Ελληνική  हिन्दी  العربية 
Redes neuronales
con dificultades de aprendizaje de propagación hacia atrás de error
Colin Fahey
neuron_group01.jpg
Una red neuronal biológica

1. Software

NeuralNetwork20080614.zip
Neuron red código fuente (C#)
21971 bytes
MD5: 94443565716e1101a3326dc2ffd558fd

2. Introducción

Este documento describe el modo de aplicar una red neuronal artificial que es capaz de ser entrenado para reconocer patrones.
Este documento describe un modelo de red neuronal que aprende de un algoritmo que utiliza “el error de propagación hacia atrás.”
Este documento incluye las manifestaciones básicas de aprendizaje de “propagación hacia atrás de error.”  Este documento tiene un enlace al código de computadora.  El código incluye las manifestaciones.  El código de computadora puede ser usado para crear complejas redes neuronales.  Sin embargo, el código informático es sólo para propósitos de la demostración.  Una alternativa aplicación podría reducir el uso de memoria y podría aumentar la velocidad.

3. Alternativas para el aprendizaje de propagación hacia atrás de error

Este documento describe un modelo de red neuronal que aprende de un algoritmo llamado “error de propagación hacia atrás.”  Este algoritmo puede requerir mucho tiempo para aprender varias lecciones.  Además, este algoritmo puede dejar al azar para aprender varias lecciones debido a la condición inicial aleatoria de la red neuronal antes de la formación.
El aprendizaje “activo” de “asociar los insumos” es una alternativa importante para el aprendizaje de “propagación hacia atrás de error.”  El aprendizaje activo de asociar los insumos asociados sólo los insumos que son al mismo tiempo activa.  Tal aprendizaje puede ser rápida y fiable.  Sin embargo, para muchos efectos prácticos, no existe una manera obvia de utilizar una red neuronal que aprende por asociación, mientras que hay una forma obvia de utilizar una red que aprende por error de propagación hacia atrás.
Algunas redes neuronales biológicas se sabe que aprender de asociación activa de los insumos.  Precedente propagación de error no se ha observado en cualquier red neuronal biológica.
En este documento se describen los usos interesantes para una red neuronal que aprende de error de propagación hacia atrás.  Sin embargo, el aprendizaje por asociación es una alternativa muy importante para el algoritmo de aprendizaje.  Diseñar una red neuronal que aprende por asociación para resolver un problema en particular podría ser más difícil que una alternativa desgining red neuronal que aprende de error de propagación hacia atrás, pero los sistemas biológicos aprenden por asociación, y la capacidad de aprendizaje de los sistemas biológicos es evidente.

4. Neurona biológica

4.1 Neuron celular

neuron_1umeter01.jpg
Una neurona biológica (tipo “multipolar,” ~4 um cuerpo celular)
Una neurona es el tipo de célula que tiene la capacidad para recibir y transmitir señales nerviosas.
Las neuronas son la base de los sistemas nerviosos, que se encuentra en animales, pájaros, peces e insectos.
Brains con la memoria y la lógica y simple reflejo de los sistemas, son a la vez sobre la base de acuerdos de neuronas.
Las neuronas también se utilizan para transmitir señales a través de largas distancias en una criatura del cuerpo, como de sensores para el cerebro, o desde el cerebro hasta los músculos.
El comportamiento de una neurona biológica es muy compleja, pero la siguiente descripción simplificada capta el principio básico:
La neurona se acumula señales recibidas de otras neuronas, y si la acumulación total de la señal excede un umbral, la neurona transmite sus propias señales a otras neuronas.

4.2 Neuron partes

neuron_labels01.jpg
Partes de una neurona biológica
Soma
El cuerpo celular de una neurona
Dendritas
Fibras químicas con los receptores (insumos) que se extienden desde el cuerpo celular de una neurona.  Una neurona normalmente tiene muchas dendritas, las dendritas y suelen tener muchas sucursales.
AXON
Una fibra con emisores químicos (productos) en su punto final que se extiende desde el cuerpo celular de la neurona.  Una neurona tiene un único axón, el axón y por lo general tiene muy pocas sucursales.
Synapse
Una configuración de tal forma que el axón de una neurona y las dendritas de otra neurona están separados por una pequeña laguna.  En tal configuración, las sustancias químicas emitidas por un axón de una neurona cruzar la sinapsis y son recibidos por las dendritas de la otra neurona.  Así es como las neuronas influir en otras neuronas.

4.3 Neuron disparando

Una neurona se acumula señales químicas de sus dendritas, y si el total de productos químicos acumulación supera un umbral en un plazo de tiempo, la neurona “incendios,” el envío de su propia señal a través de su axón.
Algunas neuronas son capaces de disparar los pulsos del orden de 100 Hz.
Las señales que pasa por las neuronas de la participación de la acumulación de sodio (Na), (K) de potasio, cloro y (Cl) iones, y la consiguiente potencial electroquímico (es decir, voltaje).
La tensión (-70 mV) descanso y el despido de tensión (+30 mV) se puede medir o, incluso influenciado por circuitos eléctricos convencionales.
La siguiente es una tensión de grabación de una rata neurona a disparar a un ritmo de aproximadamente 100 Hz cuando un solo bigote es tocado y celebrada fuera de su posición de reposo:
neuron_spikes_whisker01.jpg
Un disparo de neuronas de rata (100 Hz) debido a la celebración de un bigote.
La siguiente es la misma señal de audio se manifiesta como: neuron_spikes_whisker01.wav
A pesar de que el estímulo es constante, la neurona es señal de pulsación rápida.

4.4 Redes neuronales

El cerebro humano tiene aproximadamente 10^11 (100 millones) neuronas.
Cada neurona en el cerebelo recibe aportaciones de tantos como 10^4 (10000) sinapsis.
A pesar de que el axón y dendritas de una neurona a menudo se extienden a pocos micrómetros de distancia del cuerpo celular, algunos axones son del orden de un metro de longitud.
Un cerebro tiene neuronas con axones relativamente corto agrupadas en zonas o grupos.
Un cerebro también tiene paquetes de neuronas con axones relativamente largo para conectar las zonas separadas por centímetros.
Por lo tanto, una red jerárquica de procesamiento de elementos está formado.

4.5 Neural el estado de la red

El estado de una red de neuronas es a la vez la forma en que las neuronas están conectadas y las señales a todos de la sinapsis.
No está claro hasta qué punto la información de estado se perderían si un cerebro se tranquilized a la inactividad total por cualquier cantidad de tiempo.
Uno puede imaginar la información sostenida sólo por las señales en movimiento a través de la red, y no por la conexión de red propia, como autómatas celulares como simulaciones Conway's “Game of Life”, simple Dynamic Random Access Memory (DRAM) chips, y los ecos en una sala.

4.6 Aprendizaje de redes neuronales

Convencionales de aprendizaje se produce cuando las propiedades de las dendritas cambio en una sinapsis a ser más o menos eficientes en la recepción de señales químicas de un axón.
Las razones de tales cambios son complicados, pero el resultado es que una neurona requiere una combinación diferente de sinapsis insumos para activar una señal de salida.

5. Neurona artificial

5.1 Definición

Una “neurona artificial” es un algoritmo o un dispositivo físico que implementa un modelo matemático inspirado en el comportamiento básico de una neurona biológica.
Una neurona se acumula señales recibidas de otras neuronas o insumos (por ejemplo, sensores), y si la acumulación total de la señal excede un umbral, la neurona transmite una señal a las neuronas o de otros productos (por ejemplo, efectores).
Cualquier modelo matemático que incorpora la idea de la acumulación de múltiples entradas y dando una sola salida (que acentúa la intensidad relativa de las aportaciones en relación con algunas nivel nominal) puede ser usado para reconocimiento de patrones.
Estos modelos pueden ser la base de una neurona artificial.
Si la influencia de cada entrada se puede modificar, entonces el modelo puede apoyar el aprendizaje.

5.2 Activación de la función

Una “función de activación” es una función matemática que convierte los valores de entrada por debajo de un valor particular a un relativamente bajo valor de salida, entrada y convierte los valores por encima de un valor particular a un relativamente alto valor de salida.
Una “función de activación” se utiliza para convertir la suma ponderada de los valores de entrada de una neurona a un valor que representa la salida de la neurona.
“sigmoid” Una función es una clase general de las funciones que buen enfoque asymptotically un límite inferior para la entrada acercarse a los valores negativos infinito, enfoque y asymptotically un límite superior para la entrada acercarse a los valores positivos infinito.
En concreto, sigmoid función es la función “logistic sigmoid”:
logistic_sigmoid_function.jpg
La función “Logistic Sigmoid”: 1 / ( 1 + Exp( -x ) )
El “logistic sigmoid” función puede ser utilizado como una “función de activación” de un modelo matemático de una neurona.
El matemático derivado de la “logistic sigmoid” puede ser calculada como una fórmula, por lo que es fácil de calcular una fórmula de aprendizaje asociados.

5.3 Red neuronal de entrada

Una “red neuronal de entrada” representa una aportación a una red neuronal.
neural_network_input.jpg
Red neuronal de entrada
“Input” es el valor numérico de la entrada.

5.4 Red neuronal de salida

Una “red neuronal producción” representa un rendimiento de una red neuronal.
neural_network_output.jpg
Red neuronal de salida
“Output” es el valor numérico de la producción.
“Error” es un valor numérico que representa la diferencia entre el valor de salida y un valor “Desired”:
Error = (Output - Desired);  // Derived from: Output = Desired + Error;
El “Desired” valor representa un valor deseado, un ideal o valor, o un valor correcto, que la red neuronal debe producir una salida en respuesta a determinados insumos.
El valor de error se calcula y se asignó a “Error” por un algoritmo de adiestramiento.
El valor de error son los votos para la red neuronal.
La red neuronal puede adaptarse a reducir la diferencia entre sus resultados y los valores deseados, es decir, las redes neuronales pueden aprender, y puede por lo tanto, reducir los futuros errores.

5.5 Neuron cuerpo

Una “neurona órgano” representa el cuerpo de una neurona, que acumula las contribuciones de entrada, y añade un sesgo, y transforma el valor resultante de la “función de activación” para producir un valor de salida.
neuron_body.jpg
Neuron cuerpo
“InputAccumulator” es un valor que representa el acumulado de entrada de la neurona enlaces cuyo salidas están conectadas a la neurona cuerpo.
“Bias” ajustable es un valor que se combina con el valor acumulado de entrada.
“Output” es un valor numérico que representa el valor de salida de la neurona.
El valor de salida se calcula aplicando la siguiente fórmula:
Output = ActivationFunction( Bias + InputAccumulator );
“ErrorAccumulator” es un valor numérico que representa el acumulado de error.
Dado un determinado valor de salida de la neurona cuerpo, y habida cuenta de un determinado valor de error de salida, el valor acumulado de error se ajusta de acuerdo con la siguiente fórmula:
ErrorAccumulator += Output * (1 - Output) * OutputError;
“Rate” es un valor que afecta a la forma en que el valor “Bias” cambios en respuesta a la “ErrorAccumulator” valor:
Bias += (-1) * Rate * ErrorAccumulator;

5.6 Neuron enlace

Una “neurona enlace” representa un vínculo entre:
(1) una entrada de la red neuronal y el gasto de una neurona cuerpo;
o,
(2) una salida de una neurona y un órgano de entrada de otra neurona cuerpo;
o,
(3) una salida de una neurona cuerpo y un rendimiento de la red neuronal.
neuron_link.jpg
Neuron enlace
“Input” es un caché de la entrada para el enlace.
“Weight” ajustable es un valor que afecta la manera en señal de valores y valores de los errores se propagan a través del vínculo.
“Output” es un caché de la salida del enlace.
El valor se calcula mediante la siguiente fórmula:
Output = Weight * Input;
“Error” es un caché de error del enlace.
“WeightedError” es un caché del error del enlace, ponderado por el factor de peso:
WeightedError = Weight * Error;
“Rate” es un valor que afecta a la forma en que el valor “Weight” cambios en respuesta a la “Error” valor y el valor “Input”.
Durante el aprendizaje de redes neuronales, “Weight” el valor ajustado es de la siguiente manera:
Weight += (-1) * Rate * Input * Error;

5.7 Redes neuronales

Una “red neuronal” contiene los insumos, los productos, los órganos creados en virtud de la neurona, y enlaces.
La siguiente imagen muestra una simple red neuronal, con dos entradas y dos órganos creados en virtud de neurona en una primera capa, y una sola neurona en una segunda capa, y una salida.
neuron_network_drawing.jpg
Ejemplo de una red neuronal
Durante una simulación de una red neuronal, los valores de entrada se propagan a través de enlaces y órganos creados en virtud de la neurona, y, finalmente, llegar a resultados.
neuron_network_forward_propagation.jpg
Ejemplo de propagación hacia adelante en una red neuronal
Durante la formación, los valores de error se prestan en los resultados, y estos errores se propagan hacia atrás a través de la red neuronal, lo que resulta en la modificación de los pesos y sesgos en los órganos de neuronas y enlaces.
neuron_network_backward_propagation.jpg
Ejemplo de error de propagación hacia atrás en una red neuronal

5.8 Simulación de redes neuronales

Definición:
“Red de simulación” es el procedimiento utilizado para propagar red de insumos a través de enlaces y órganos creados en virtud de la neurona hasta llegar a la red de productos.
Red de simulación involucra la simulación de todos sus enlaces y órganos creados en virtud de la neurona.
Simulaciones sin bucles o en el tiempo:
Hay muchas posibles configuraciones de red la participación de los bucles.
Hay muchos modelos de neuronas que dependen de tiempo.
Sin embargo, algunas de las aplicaciones más comunes de la participación de neuronas artificiales ni tiempo ni bucles.
El siguiente es un modelo matemático de una neurona cuerpo:
Output = ActivationFunction( Bias + InputAccumulator );
Con este modelo de neurona, y una red sin “bucles,” simplemente el comienzo de insumos externos, calcular los resultados de la primera capa de neuronas, y suministrar dichos productos como insumos para la siguiente capa, calcular los resultados para que la capa, y continuar a través de capas de las neuronas hasta los productos finales se calculan.
Bucles:
Una red puede tener conexiones en forma de bucles (o “ciclos).”
Por ejemplo, la salida de una neurona se puede conectar directamente a una entrada de la misma neurona, provocando “comentarios.”
Otro ejemplo es la salida de la neurona # 1 está conectado a la entrada de la neurona # 2, y la salida de la neurona # 2 está conectada a la entrada de la neurona # 1.
Si usted puede comenzar desde algún punto de una red y trazar un camino a través de las neuronas y las conexiones, obedeciendo a la forma de un flujo de las señales, y, finalmente, llegar a ese mismo punto de partida, entonces el camino es un lazo.
Bucles introducir la interesante posibilidad de señales que fluyen en torno a la red por períodos indefinidos de tiempo.
Algunos modelos sencillos asumir que se toma una determinada cantidad de tiempo para las señales pasan a través de las neuronas individuales.
En estos modelos, las señales circulan a través de bucles con pocas neuronas más rápidamente que las señales circulan a través de bucles con muchas neuronas.
Una neurona conectada a sí mismo tendrá la señal más rápida tasa de circulación.
Si una neurona tiene una entrada X, un peso W, un sesgo B, y no de producción negativa Y (por ejemplo, 0.0 -> 1.0), entonces podemos formar un oscilador simplemente mediante el establecimiento de W = (-8) y B = +4 y Y conexión a X;
cada vez que simulan la neurona, la señal será toggled al frente del Estado.
Una red con bucles puede ser ocupado con la actividad, aun cuando no acepta las señales externas (estímulos) como insumos.
Los autómatas celulares normas de Conway's “Game of Life” se podría aplicar a una red neuronal, que le da un pequeño toque de la diversidad de actividades que le puede ocurrir a una red neuronal con bucles.
Finito-estado (FSM) máquinas, osciladores, la volatilidad de la memoria (en contraste con el aprendizaje a través de cambios en los patrones de pesos), se hizo posible gracias a un bucle.
Si una red tiene bucles, no podemos actualizar los productos hasta que computar todos los productos, por lo que requieren un buffer temporal para almacenar los resultados computados hasta que computar todos los productos y, a continuación, podemos cometer los nuevos valores de salida a las neuronas en la red.
Cualquier método que se actualiza en los resultados reales de la red en una forma progresiva, en lugar de un todo-at-once modo, se introduce un ordenamiento arbitrario en el tiempo que lleva al caos.
Física simulaciones que participen junto entidades, como los planetas en órbita alrededor de una estrella con las fuerzas gravitacionales mutuas entre todos los organismos, requieren el mismo tipo de enfoque: calcular la red en las fuerzas de todos los órganos antes de actualizar cualquier velocidad y posición.
Tiempo de dependencia:
Una simple red de simulación normalmente implica insumos que causan los resultados deseados después de una sola simulación paso del tiempo.
En dicha simulación, pensamos en términos de “número de iteraciones” en lugar de “tiempo en segundos.”
No hacía falta que hubiera cualquier tipo de correspondencia entre las repeticiones y una escala de tiempo.
Un sistema puede estar diseñado para hacer una red de simulación (iteración) sólo cuando las nuevas aportaciones está disponible, lo que podría ocurrir a intervalos irregulares de tiempo.
Sin embargo, considere la posibilidad de un modelo matemático de una neurona que los intentos de simular la pulsación de salida aspecto de una neurona biológica.
La pulsación puede ser caracterizada en términos de tiempo, como la pulsación en una determinada frecuencia o que tengan pulsos cuya curva se extiende por un determinado período de tiempo.
Podemos tener otro momento que dependen de elementos en un modelo matemático de una neurona, como un insumo cuyo valor acumulador recibe contribuciones de los insumos, pero tiene una fuga proporcional a su valor actual.
En general, podemos encontrar una analogía circuito eléctrico para los elementos que obedecen a determinadas ecuaciones matemáticas, y así uno puede considerar una neurona como un circuito con resistencias, condensadores, y no lineal del amplificador.
Así como un circuito complejo puede exhibir en función del tiempo comportamiento, la salida de una neurona puede considerarse como una función que depende de sus entradas y en un momento complicado.

5.9 Error de propagación hacia atrás

Definición:
“Error de propagación hacia atrás” es un procedimiento matemático que comienza con el error en la salida de una red neuronal y este error se propaga hacia atrás a través de la red para obtener los valores de error de salida para todas las neuronas en la red.
Precedente fórmulas de propagación de error:
Los valores de error a la red neuronal resultados se calculan mediante la siguiente fórmula:
Error = (Output - Desired);  // Derived from: Output = Desired + Error;
La acumulación de errores en una neurona cuerpo se ajusta de acuerdo a la salida de la neurona y el órgano de error de salida (por enlaces conectados a la neurona del cuerpo).
Cada valor de error de salida contribuye al error acumulador de la siguiente manera:
ErrorAccumulator += Output * (1 - Output) * OutputError;
En cierto sentido, todos los errores de salida en la próxima capa de fugas hacia atrás a través de la entrada de pesos y acumulan en la salida de una neurona en una capa anterior.
Este valor acumulado se multiplica por un valor que es mayor cuando la producción actual de la neurona es más neutral (la mayoría de “indecisos)” y es menos cuando la salida de la neurona es más extremas (muy “cierto).”
Cambio de peso y cambiar los prejuicios fórmulas:
La base del aprendizaje es el ajuste de pesos y valores de sesgo en un intento de reducir la producción futura de errores.
“Tasa de” aprendizaje es un valor numérico que indica esencialmente la rapidez con una neurona, ajusta el peso y el sesgo de los valores de acuerdo a los valores de error.
La fórmula siguiente indica cómo cambiar los pesos de una neurona con un determinado conjunto de valores de entrada y salida de su valor de error:
Weight += (-1) * Rate * Input * Error;
La fórmula siguiente indica cómo cambiar el sesgo de una neurona dada la actual salida de error de la neurona:
Bias += (-1) * Rate * Error;

6. La formación de una red neuronal

6.1 Formación procedimiento

Se puede comenzar con una red y capacitado a seguir para reducir la producción de error con la formación, pero a menudo comienza con un sin red.
Antes de la capacitación, elegir valores aleatorios para todos los pesos de todas las neuronas en la red.
He observado que los problemas cuando los valores seleccionados al azar en el intervalo de [ -1.0, +1.0 ], y no tuve problemas cuando me seleccionaron al azar los valores de intervalo [ +0.1, +1.0 ].
Menciono estas observaciones, pero que podría ser debido a mis errores.
El objetivo de pesos es al azar para mitigar la posibilidad de que situaciones patológicas en una red.
Si todas las neuronas en una red comenzó con el mismo peso, la red no tendría base para aumentar la diferenciación entre las neuronas.
He observado que el establecimiento de todos los valores de sesgo a cero (0.0) es aceptable.
Una sesión de entrenamiento incluye pasar por el grupo de aprendizaje muchas veces, quizás cientos o miles de veces.
Por cada vez que pase a través de la capacitación establecidos, consideramos que cada tema en el entrenamiento conjunto.
Un tema de formación ha establecido un conjunto de insumos, y un conjunto de resultados deseados.
Estamos simular la red, utilizando el conjunto de insumos especificados por el tema de formación.
La simulación de los rendimientos de valores de salida.
Nosotros los errores se propagan hacia atrás a través de la red neuronal para calcular la salida de todos los errores de las neuronas.
Actualizamos todos los pesos y sesgos.
Precaución: Un académico texto que discutió redes neuronales abogó por pasar por todo el conjunto de capacitación y sólo resumir los cambios de peso y los prejuicios.
Después de pasar por toda la formación que hemos establecido una serie de sumas de cambios de peso y cambios de sesgo.
Tomamos estas sumas y actualizar todos los pesos y sesgos.
Estas cantidades podrían ser enormes para grandes conjuntos de formación - y el consiguiente aumento de peso de espacio sería injustificadamente grande.
Por tanto, creo que dividir por el número de temas de capacitación, para obtener el cambio del peso medio y el promedio de valores de cambio de sesgo de valores, sería razonable.
Hay algo atractivo acerca de la computación un único vector de cambio de peso que de alguna manera tiene toda la capacitación en conjunto para su examen.
Yo no sé si simplemente cometió un error en la aplicación de la idea, pero me dio casi en su totalidad hasta redes neuronales, debido a cómo las cosas fueron mal giro.
Luego, cuando he intentado la ingenua alternativa, es decir, hacer actualizaciones a cada tema de capacitación, las cosas funcionó perfectamente.
Teniendo en cuenta todo el conjunto de capacitación antes de realizar una actualización tiene algunas ventajas y desventajas:
Ventaja:
Única formación en los temas de formación conjunto con la extrema error (es decir, la mala formación tema) no hará una gran contribución a la actualización, porque será abrumado por la influencia de los “buenos” datos;
Desventajas:
Si N es el número de elementos en su formación conjunto, su ritmo de progreso para el peso óptimo vector se dividirá por N.
O, para una determinada distancia tendrá sólo una fracción de dirección pistas a lo largo del camino en comparación con el enfoque ingenuo;
Tal vez esta técnica va a trabajar para usted, pero probar el enfoque ingenuo antes de renunciar a las redes neuronales en total frustración!

6.2 El hecho de no reducir el error

La capacitación puede dejar de reducir el error global para el conjunto de capacitación.
Es importante detectar un fracaso para reducir el error.
La lista siguiente describe las causas de fracaso para reducir el error, y las posibles soluciones.
Los artículos de la lista se enumeran en orden aproximado de probabilidad, con la primera del día, siendo las más probables.
(1) La combinación de peso ha llegado a un local mínimo de la superficie de error, y se ha “quedado atascado;”
Solución: Inicie una nueva simulación con los nuevos pesos al azar.
(2) La red tiene muy pocas neuronas o capas para codificar todos los patrones en su conjunto la formación;
Solución: Cuidadosamente la posibilidad de añadir o capas de neuronas.
(3) Uno o más elementos en su conjunto en contradicción con la formación o es manifiestamente incompatible con el resto de tus temas de formación;
Solución: Compruebe su conjunto de datos de irregularidades.
Encuentra los elementos de prueba que permitan el error más capacitado para su red.
Mire en las técnicas de peso, como promedio, a cambios a lo largo del todo el conjunto de datos para reducir la influencia de cualquier mala casos.
(4) El tipo de aprendizaje es demasiado alto (algo más de 1.0 es probablemente excesivo), y las actualizaciones siempre rebase la meta;
Solución: Reducir la tasa de aprendizaje.
(5) El tipo de aprendizaje es demasiado baja (por debajo de 0.01 nada podría ser demasiado pequeña), y la red es realmente convergentes en la combinación peso ideal -, pero es demasiado lento;
Solución: Aumentar la tasa de aprendizaje.
La formación de dos capas, tres de la red de neuronas para que coincida con la exclusiva-o (xor) función, puede, a pesar de la simplicidad de la función, no convergen.
Esto puede ser sorprendente y frustrante.
Sin embargo, la solución es simplemente poner todos neurona vínculo pesos a los nuevos valores aleatorios y luego tratar de formar de nuevo en la red.
En el caso de la formación de una red para que coincida con la exclusiva-o (xor) función, los pesos al azar positivos parecen conducir al éxito del aprendizaje cada vez, mientras que ciertas combinaciones de positivos y negativos pesos a veces causa que la formación no de forma espectacular.
La necesidad de seleccionar nuevos pesos iniciales aleatorios para recuperarse de una falta de convergencia es una desafortunada consecuencia de la combinación del procedimiento de aprendizaje.
El procedimiento de aprendizaje es básicamente la búsqueda de un mínimo de ascendencia más empinada sobre una superficie, y la posibilidad de que la presencia de un “mínimo local” en el que la búsqueda puede ser atrapado.

6.3 En general la formación de error

El error global de una red puede caracterizarse por la raíz cuadrada de la media de errores al cuadrado, o “la media cuadrática” (RMS).
El error en cualquier red específica de salida viene dado por la siguiente fórmula:
Error = (Output - Desired);
La suma de errores cuadrados para una sola formación del día, se obtiene mediante la siguiente fórmula:
double squaredError = 0.0;
foreach (NeuralNetworkOutput output in ListOfOutputs)
{
    squaredError += (output.Error * output.Error);
}
La suma de errores al cuadrado para el conjunto de temas en un entrenamiento conjunto es la suma de errores cuadrados de cada uno de los temas.  El siguiente código muestra cómo los errores al cuadrado para el conjunto de temas de formación se puede determinar:
double squaredError = 0.0;
for
    (
    int trainingItemIndex = 0;
    trainingItemIndex < totalTrainingItems;
    trainingItemIndex++
    )
{
    trainingSet.SetAllInputNodeValues( trainingItemIndex );
    Simulate( propagationIterations );
    trainingSet.SetAllOutputNodeErrorValues( trainingItemIndex );
    PropagateErrors( propagationIterations );
    UpdateWeightsAndBiases();

    foreach (NeuralNetworkOutput output in ListOfOutputs)
    {
        squaredError += (output.Error * output.Error);
    }
}
En general, la media cuadrática (RMS) del error está dado por la raíz cuadrada de la media de los errores al cuadrado:
double rmsError = Math.Sqrt( squaredError / (double)totalTrainingItems );
Este valor es una manera de caracterizar el error global de una red de formación teniendo en cuenta todos los casos.

7. Aprendizaje

El aprendizaje se produce cuando el peso y los valores de sesgo neurona y neurona enlaces órganos son ajustadas a las especificadas con la red de insumos y la salida de error de valores.
Considere la posibilidad de una red neuronal con dos entradas (x1 y x2), y dos enlaces (con los pesos w1 y w2), y una neurona cuerpo, y una salida (y).
neuron_network_single_neuron.jpg
Red neuronal con dos entradas, una neurona y el órgano, y una salida
Formamos esta neurona mediante el suministro de insumos, la producción de computación, la informática el error de cálculo de peso y cambios de sesgo, y la actualización de las ponderaciones y los prejuicios, llegando a nuevos pesos ( w1', w2' ).
Hay una muy interesante manera de visualizar este proceso.
Podemos considerar que la serie de pesos como un vector en un multi-dimensional espacio.  Por ejemplo, por dos pesos que tenemos el vector W = (w1, w2) en un período de dos “peso” dimensional “espacio.”
Cuando los pesos son ajustados, tenemos un nuevo vector de peso W' = (w1',w2').
Podemos visualizar esto como una cuestión W se muda a un nuevo punto W' como parte de un proceso para reducir al mínimo error de salida.
Normalmente uno no computar el error de salida para todas las posibles combinaciones de peso, porque la esperanza es que el peso proceso de ajuste de manera eficiente la cabeza hacia la mejor combinación.
Sin embargo, vamos a la parcela la superficie que en esencia demuestra qué tan bien cumple una neurona todos los artículos en el grupo de aprendizaje en función de sus dos pesos:
neuron_weight_space03.jpg
Suma de errores al cuadrado para un determinado conjunto de formación en función de dos pesos (w1, w2)
Básicamente, el objetivo del aprendizaje es a descender al nivel más bajo de esta superficie, donde el error se minimiza.
Una vez que encontramos el punto de que los rendimientos W = (w1, w2) el valor mínimo en esta superficie, el aprendizaje ha terminado y, a continuación, podemos simplemente utilizar la neurona capacitado.
El siguiente gráfico muestra la salida de una neurona formados en función de todas las posibles entradas X = (x1, x2):
neuron_input_space02.jpg
Neurona de salida como una función de dos entradas (x1, x2) para un peso combinación que minimiza el error cuadrado
A pesar de que la suma ponderada de estos dos insumos neurona es simplemente (w1*x1 + w2*x2), la activación de la función se vuelve un simple avión a girar a un acantilado.
Esta superficie tiene la correcta valores de salida para todas las combinaciones de entrada (x1, x2) especificado por nuestra formación establecidos.
Pero usted puede imaginar cómo los vectores de entrada X = (x1, x2) formación similar a los valores llevaría también a los valores de salida adecuada; esta característica de las redes neuronales se llama “generalización” y es el principal valor de redes neuronales.
Como se trata de “descender” el cuadrado de superficie de error, hay que “saltar antes de mirar!”
Actualizamos el peso de vectores y prejuicios y, a continuación, se evalúa la “altura” de la superficie en nuestra nueva ubicación.
Una consecuencia de esto es que podamos pasar a un punto con un error más extremas.
Otra consecuencia es que esto podría tomar algún tiempo para descender de nuevo a la profundidad de nuestra anterior ubicación.
La posibilidad de “saltar” a la más extrema picos y valles de la superficie de error se relaciona directamente con la “tasa de aprendizaje,” ya que el tipo de aprendizaje determina cuánta influencia tienen los valores de error en nuestro peso y el sesgo cambios.
El siguiente gráfico muestra cómo el aumento de la tasa de aprendizaje acelera nuestra llegada a posiciones más bajas en el error cuadrado de superficie, donde el error se minimiza.
El gráfico también muestra que el aumento de la tasa de aprendizaje también introduce la posibilidad de hacer malos pasos:
neuron_training_error1512_zoom.jpg
A corto plazo la tendencia de la media-squared (RMS) error para todo el conjunto de formación durante varios formación iteraciones, para el aprendizaje de las tasas de 0.1, 0.5, 1.0, y 2.0.
Aquí hay un gráfico de la raíz-media-squared error de salida de un multi-capa con una red de capacitación establecidos con 19386 artículos que experimentaron muchos malos pasos en el camino a los mejores vectores de peso:
neuron_training_error_spikes.jpg
Capacitación a veces encuentros en las espigas de raíz-media-squared (RMS) error, error cuando se incrementa para algunos iteraciones antes de la reanudación de la tendencia a la baja.
A veces la tendencia es más suave para la convergencia deseada conjunto de pesos:
neuron_training_error1512.jpg
Evolución de la media-squared (RMS) error para todo el conjunto de formación durante varios formación iteraciones, para el aprendizaje de las tasas de 0.1, 0.5, 1.0, y 2.0.

8. Ejemplo: Exclusivo-o (xor)

“Exclusivo-o” (xor) es una función que acepta dos entradas booleanas y los rendimientos de un solo operador booleano de salida de acuerdo con la siguiente tabla:
X1
X2
Y = xor (X1, X2)
0
0
0
0
1
1
1
0
1
1
1
0
En general, una sola neurona ha insumos {x1, x2, ...}, entrando a través de enlaces con pesos {w1, w2, ...}.
La neurona calcula una cantidad d = bias + (w1*x1 + w2*x2 + ...) intermedios, lo que puede considerarse como la identificación de avión que, en un conjunto infinito de planos paralelos, contiene un determinado punto con coordenadas {x1, x2, ...}.
La neurona calcula un valor de salida, y = ActivationFunction( d ), que tiene el efecto de dividir el conjunto infinito de planos paralelos a dos conjuntos, con un conjunto que producen bajos valores de salida, y el otro de alta producción de valores de salida.
De este modo, una sola neurona espacio multidimensional se divide en dos regiones, separadas por el avión bias + w1*x1 + w2*x2 + ...  = 0, y asigna valores de salida baja a los puntos de la región en un lado del avión, y asigna valores de salida de alta a los puntos de la región en el lado opuesto del avión.
Por lo tanto, si dos conjuntos de puntos en el espacio multidimensional tienen distintas clasificaciones y puede estar completamente separados de un avión, luego una sola neurona puede ser usado para clasificar correctamente los puntos de los que establece como pertenecientes a un grupo u otro.
La exclusiva-o (xor) función clasifica puntos en dos dimensiones espaciales (con coordenadas (x1, x2)) de tal manera que los puntos en el conjunto { (0,0), (1,1) } se clasifican como la producción de un rendimiento de “0,” y puntos en el conjunto { (0,1), (1,0) } se clasifican como la producción de una producción de “1.”
No existe un único “plano” (en este caso, una línea) que puede separar esos cuatro puntos en las dos series.
Por lo tanto, una única neurona no puede utilizarse para clasificar los puntos de acuerdo a la exclusiva-o (xor) función.
Una sola neurona sólo puede dividir un espacio de los puntos en que ambas regiones.
La exclusiva-o (xor) función clasifica los puntos de una manera que se divide esencialmente en dos dimensiones para el espacio en tres regiones (o, alternativamente, cuatro regiones).
Dos neuronas pueden dividir en dos dimensiones para el espacio en tres regiones (por ejemplo, por dos líneas paralelas), y por lo tanto puede ser utilizada para clasificar los puntos de acuerdo a la exclusiva-o (xor) función.
Una tercera neurona puede ser utilizada para combinar los resultados de los otros dos a las neuronas en una sola salida.
La siguiente red neuronal, con dos entradas y dos órganos creados en virtud de neurona en una primera capa, y una sola neurona en una segunda capa, y una sola salida, se puede utilizar para clasificar los puntos de acuerdo a la exclusiva-o (xor) función.
Las siguientes redes neuronales pueden ser entrenados para calcular la exclusiva-o (xor) función, o la red neuronal puede simplemente tener su peso y los prejuicios valores asignados de una manera que produce el comportamiento deseado.
neuron_network_drawing.jpg
Una red neuronal capaz de clasificar los puntos de acuerdo de exclusividad-o (xor)
El código de computadora relacionados con este documento demuestra la formación de redes neuronales se muestra en el diagrama anterior para que coincida con la exclusiva-o (xor) función.
Las redes neuronales a veces no para aprender la función, pero el software puede ser simplemente para intentar reiniciar el aprendizaje con un nuevo conjunto de pesos iniciales.
Si el software aprende con éxito la exclusiva-o (xor) función, la salida se parece a lo siguiente:
x1 =   0.0000   x2 =   0.0000   y =   0.0172    error =   0.0172
x1 =   1.0000   x2 =   0.0000   y =   0.9802    error =  -0.0198
x1 =   0.0000   x2 =   1.0000   y =   0.9839    error =  -0.0161
x1 =   1.0000   x2 =   1.0000   y =   0.0154    error =   0.0154
La salida (y) es de un 2% del valor deseado para cada una de las cuatro combinaciones de las variables (x1, x2).
A pesar de que la red se formó para aprender valores de salida de sólo cuatro combinación de variables (con valores 0.0 y 1.0, que representan valores booleanos), los insumos para la red neuronal se puede ajustar a cualquier arbitraria de punto flotante valores.
La siguiente imagen muestra la salida de la formación de redes neuronales para muchas combinaciones de valores de entrada:
neuron_xor_surface02.jpg
Una red neuronal capaz de clasificar los puntos de acuerdo de exclusividad-o (xor)
La superficie representa el resultado de la red neuronal para todas las posibles combinaciones de entrada (x1, x2) en los rangos [ -2.0, +2.0 ].
La salida está cerca de 0.0 a la baja las áreas de la superficie, y la salida está cerca de 1.0 en las zonas más altas de la superficie.
Tenga en cuenta que la superficie es baja para los puntos a { (0,0), (1,1) }, y la superficie es alta en los puntos { (0,1), (1,0) }.
La red fue sólo han entrenado y formado para producir los resultados deseados para cuatro combinaciones de variables de entrada, pero la red neuronal también produce productos para todos los demás posibles combinaciones de valores de entrada.
La capacidad de redes neuronales para producir respuestas razonables para casos generales después de haber sido entrenados para casos específicos puede considerarse como “la generalización.”
Cualquier proceso que se ajusta a los puntos de datos a un modelo, como la instalación de puntos a una línea u otra curva, también produce un efecto “generalizador,” por lo que el hecho de que la instalación una red neuronal para producir los resultados deseados para las enseñanzas concretas que se traduce en una especie de generalización no es extraordinaria, pero, sin embargo, es interesante observar la capacidad de generalizar a partir de casos concretos.

9. Ejemplo: Tic-tac-toe “(Naughts y de cruces)”

9.1 Introducción

Tic-tac-toe “(Naughts y de cruces)” es un simple juego en una grilla 3 * 3 de células que pueden ser marcados con “O” o “X”.
Los jugadores alternativamente lugar “O” y “X” marcas en celdas desocupadas hasta que uno de los jugadores completa una fila, columna o diagonal.
Debido a que hay 3 filas y 3 columnas, diagonales y 2, hay ocho patrones de ganar para cada jugador.
tic_tac_toe_board_and_winning_patterns.jpg
Tic-Tac-Toe bordo de patrones y ganar
Es trivial escribir una función recursiva que explora todas las posibles Tic-Tac-Toe juegos, debido a que la duración máxima del juego es de nueve se mueve.
En cada uno de los puntos en el juego, simplemente, examinar los resultados de avanzar en cada una de las restantes células desocupadas.
Esta función puede confirmar que un Tic-Tac-Toe juego “perfecto” con “los jugadores” no terminan con el ganador.

9.2 La formación de una red neuronal para indicar la mejor se mueve

Una función recursiva puede explorar todos los juegos posibles y determinar la mejor jugada para cada uno de bordo de configuración.
Añadimos la configuración de cada uno de bordo (insumos), y la mejor jugada (resultados deseados), a una lista de temas de formación.
A continuación, los trenes de la red para producir los resultados deseados para cada conjunto de insumos.
La red tendrá 9 entradas correspondientes a cada célula de la red, y los valores de entrada se limitará a los siguientes valores:
0: desocupado celular
+1: Protagonista jugador
-1: Oponente jugador
La red tendrá 9 productos correspondientes a cada célula de la red, y los valores de salida se limitará a los siguientes valores:
0: No mueva aquí
1: Mover aquí
Ocho productos se fijarán a “0,” y un producto se pone a “1.”
Así, después de la formación de redes neuronales, una junta de configuración pueden ser especificadas como entrada, y la red neuronal se indicará la mejor jugada.
La salida más cercano a “1” se indicará la mejor jugada, y todos los demás productos deben estar cerca de “0.”
En general, cualquier función booleana con los parámetros booleanos y productos pueden ser representados por una red neuronal con dos capas de neuronas.
La primera capa de neuronas puede dividir el espacio multidimensional en las regiones, y la segunda capa combina la región clasificaciones para producir los correspondientes valores de salida.
El Tic-Tac-Toe red neuronal booleana produce resultados, y aunque las entradas tienen tres estados ( -1, 0, +1 ), podríamos, en princple, convertir esos pocos valores discretos de entrada a un conjunto de insumos booleanos.
Por lo tanto, dos capas de neuronas debe ser suficiente para aprender Tic-Tac-Toe.
Debido a que la red cuenta con 9 salidas, hay 9 neurona órganos en la final (segunda) capa.
La única red neuronal decisión de diseño es decidir el número de órganos creados en virtud de la neurona para poner en la primera capa de la red neuronal.
Para tomar esta decisión, código de computadora puede generar y formar una red neuronal con N neuronas en la primera capa.
La capacidad de la red neuronal para aprender la completa formación establecidos para Tic-Tac-Toe pueden ser trazados.
El siguiente gráfico muestra el conjunto global de formación de error durante la formación para cada una de 48 diferentes redes neuronales, con N = 1,2,...,48 neuronas en la primera capa.
neuron_training_tictactoe_nlayers01.jpg
En general la formación conjunto de error durante la formación, para N = 1,2,...,48 neuronas en la primera capa (N = 1 es en la parte superior, y N = 48 es en la parte inferior, intermedia y la mayoría de las curvas son más bajos para los valores más altos de N)
Otra forma de visualizar esta tendencia es la de formar una superficie de la secuencia de curvas:
neuron_training_tictactoe_surface01.jpg
En general la formación conjunto de error durante la formación, para N = 1,2,...,48 neuronas en la primera capa (N = 1 se encuentra en la parte de atrás, y N = 48 es en la parte delantera)
Así, vemos que a medida que nos acercamos N = 48 neuronas en la primera capa, la red parece estar en posición de aceptar todos los casos la formación.
Cualquier cosa menos de 48 niveles de neuronas parece insuficiente para conocer el conjunto completo de los casos.
Por un escaso número de neuronas, cada neurona se reduce de forma significativa el error global.
Sin embargo, cuando el número de neuronas está cerca del número necesario para poder aprender todo el conjunto de lecciones, cada neurona sólo reduce el error de una cantidad relativamente p