Descarga - Portafolio Redes Neuronales

Anuncio
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO
CENTRO UNIVERSITARIO UAEM
“ATLACOMULCO”
REPORTE DE INVESTIGACIÓN
BACK PROPAGATION
INTEGRANTES:
CARLOS MARTÍNEZ LÓPEZ
JOSÉ ALBERTO CRUZ CASTRO
JOSÉ CARLOS SECUNDINO MACEDONIO
28 DE NOVIEMBRE DEL 2014
1
ÍNDICE
CAPITULO 1
INTRODUCCIÓN…………………………………………………………………… 3
ALGORITMO…………………………………………………………………….……4
ESTRUCTURA………………………………………………………………….……5
GRADIENTE DESCENDENTE……………………………………………………..7
DERIVADA DE LA FUNCIÓN SIGMOIDAL….……………………………………9
ACTUALIZACIÓN DE PESOS….……………………………………………….….10
ACCELERATION
AND
STABILIZACION
OF
SUPERVISED
GRADIENT
TRAINING OF MLPS. AUTOR:NGUYEN-WIDROW……………………………11
INICIALIZACIÓN DE NGUYEN-WIDROW………………………………………. 12
TASA DE APRENDIZAJE Y FACTOR MOMENTO……………………….……. 13
SESGO………………………………………………………………………….…… 16
CAPÍTULO 2
BACKPROPAGATION………………………………………………………………17
CÓDIGO DEL PROGRAMA…………………………………………………...……18
COMENTARIOS……………………………………………………………………...23
REFERENCIAS……………………………………………………………………... 25
2
ÍNTRODUCCIÓN
La Backpropagation es una red de tipo de aprendizaje supervisado, que emplea
un ciclo propagation-adaptacion de dos fases. Una vez que se ha aplicado un
patrón a la entrada de la red como estímulo se propaga desde la primera capa a
través de las capas superiores de la red. (3,4,2,8)
La regla de aprendizaje del Perceptrón de Rosenblatt y el algoritmo LMS de
Widrow y Hoff fueron diseñados para entrenar redes de una sola capa. Estas
redes tienen la desventaja que solo pueden resolver problemas linealmente
separables, fue esto lo que llevo al surgimiento de las redes multicapa para
sobrepasar esta dificultad en las redes hasta entonces conocidas. (3,4,8,14)
El primer algoritmo de entrenamiento para redes multicapa fue desarrollado por
Paul Werbos en 1974, este se desarrolló en un contexto general, para cualquier
tipo de redes, siendo las redes neuronales una aplicación especial, razón por la
cual el algoritmo no fue aceptado dentro de la comunidad de desarrolladores de
redes neuronales. Fue solo hasta mediados de los años 80 cuando el algoritmo
Backpropagation o algoritmo de propagación inversa fue redescubierto al mismo
tiempo por varios investigadores, David Rumelhart, Geoffrey Hinton y Ronal
Williams, David Parker y Yann Le Cun. El algoritmo se popularizó cuando fue
incluido en el libro "Parallel Distributed Processing Group" por los psicólogos David
Rumelhart y James McClelland. La publicación de este libro trajo consigo un auge
en las investigaciones con redes neuronales, siendo la Backpropagation una de
las redes más ampliamente empleadas, aun en nuestros días. (4,2,3,9)
La red Backpropagation tiende a desarrollar relaciones internas entre neuronas
con el fin de organizar los datos de entrenamiento entre clases. Esta tendencia se
puede utilizar para llegar a la hipótesis que consiste en que todas las unidades de
la capa oculta de una red Backpropagation son asociadas de alguna manera a
3
características específicas del patrón de entrada como consecuencia del
entrenamiento. (5,1,1,5)
ALGORITMO
Paso 0. Inicializar pesos y bias. Paso 1.
Paso 2. Para cada patrón de entrenamiento, hacer Pasos 3-8
Propagación hacia delante:
Paso 3. Hacer la activación de cada neurona de entrada Xi (i=1…n) igual al
atributo i del patrón. Enviar esta señal a cada neurona oculta.
Paso 4. Cada neurona oculta Zj (j=1…p) suma cada una de sus entradas pesadas:
y luego computa su activación: Finalmente, envía esta señal a cada neurona de
salida.
Paso 5.Cada neurona de salida Yk (k=1…m) suma sus entradas pesadas:
y luego computa su señal de salida:
Retropropagación del error:
Paso 6. Cada neurona de salida Yk (k=1…m) recibe un patrón objetivo
correspondiente al patrón de entrada, y computa el término de error:
a continuación, calcula el término de corrección de peso (que se usará más tarde
para cambiar wjk): y su término de corrección de bias (que se usará para cambiar
w0k más tarde): Finalmente, envía a todas las neuronas de la capa oculta.
Paso 7.Cada neurona oculta Zj (j=1…p) suma sus deltas recibidas de la capa de
salida.
A continuación, multiplica este término por la derivada de la activación para
calcular el término de error:
Después calcula el término de corrección de peso (que se usará más tarde para
cambiar vij):
y su término de corrección de bias (que se usará para cambiar v0j más tarde):
Cambio de pesos y bias:
Paso 8. Cada neurona de salida Yk (k=1…m) cambia todos sus pesos y bias
(j=0…p): Cada neurona oculta Zj (j=1…p) cambia todos sus pesos y bias (i=0…n):
4
Paso 9.Chequeo de la condición de parada. Si se cumple, poner el flag Parar a
verdadero. (2,2,4,13) (2,3,1,10)
ESTRUCTURA
Neurona con una entrada
w
Y= r ( x + w )
Neurona con entrada y bias Ɵ
Neurona con múltiples entradas
W1
X1
XX22
W2
Ʃ
σ
y
W3
X3
y = σ (w1 x1 w2 x2 +w3 x3 + Ɵ)
Red Neuronal
5
ℓ
XJ= Entrada al nodo j de la capa ℓ
ℓ
Wij= Peso de la capa ℓ-1 del nodo i a la capa ℓ del nodo j
1
r(x)=1+𝑒−𝑥 Función de transferencia sigmoidal
ℓ
Ɵ j = Bias del nodo j de la capa ℓ
ℓ
Ɵ j = Salida del nodo j de la capa ℓ
tj= Valor objetivodel nodo j de la capa de salida
El error
1
E= 2 Ʃ(oj – tj)2
𝜕𝐸
𝜕𝑤𝑗𝑘
es el cambio del error cuando el peso wjk cambia
Wjk= Peso de la capa de salida del nodo K a la capa ℓ del nodo j
Ok= Salida del nodo k de la capa de salida
Xk = Entrada del nodo k de la capa de salida igual a oj. Por el peso wjk
Xk= wjk*oj
Oj = r (wij*xj)
Por lo tanto
xk= wjk ( r ( wij * xj ) )
6
GRADIENTE DESCENDENTE
El método del gradiente descendente se basa en buscar la dirección en la que una
pequeña variación del vector de pesos hace que el error decrezca más
rápidamente.
Para encontrar esta dirección usamos la que nos marca el gradiente de la función
de error con respecto al vector de pesos.
  E E
E 
E ( w)  
,
,...,
wn 
 wo w1
Para llegar a comprenderlo mejor veamos la siguiente figura en la que se
representa el hiperplano resultante de la evaluación de una función de error
dependiente de un vector de pesos bidimensional.
Resultante de la evaluación de una función de error.
La flecha nos indica la dirección en la cual pequeñas variaciones en los pesos
producen las mayores variaciones en la función de error, que es la misma
dirección que la que indica el gradiente de la función de error con respecto del
vector de pesos.
Así la actualización de los pesos para el método del gradiente descendente
quedaría de la siguiente manera:



w  w  w
w  E (w)


7
El algoritmo del gradiente descendente es el siguiente:
GRADIENTE_DESCENDENTE ()
-
Inicializar cada peso a un valor aleatorio.
-
Repetir hasta que se cumpla la condición de terminación:
o
Inicializar cada wi a cero.
o
Para cada ejemplo de entrenamiento hacer:
Calcular la salida que ofrece la red
wi   (t  o) xi
Para cada peso wi hacer:
wi  wi  wi
o
Para cada peso wi hacer:
FIN GRADIENTE_DESCENDENTE
8
DERIVADA DE LA FUNCIÓN SIGMOIDAL
σ(x) = funcionsigmoidal =
=
𝑒 −𝑥
(1 + 𝑒 −𝑥 )2
=
1 + e−x − 1
(1 + e−x )2
d
1
(
)
dx 1 + e−x
=
1 + e−x
1
−
(1 + e−x )2 (1 + e−x )2
=
1
1
−(
)2
−x
(1 + e )
1 + e−x
= 𝜎(𝑋) − 𝜎(𝑋)2
σ′ = σ(1 − σ)
9
ACTUALIZACIÓN DE PESOS
La primera regla para realizar la actualización de pesos en una red neuronal se le
conoce como la regla del perceptron o también el procedimiento de convergencia
del perceptron esta primera regla modifica Wc de acuerdo al algoritmo básico de la
regla del perceptron. (6,4,1,5)
𝐸
Wk+1 = Wk + 0 ( 2 ) Xk
Desarrollando por Rosembler
Esta regla actualiza Wk solo si el error es diferente de cero.
El valor de entrada es W k el nuevo vector de peso W k+1 y a es la tasa de
aprendizaje de la red. (6,4,5,6)
Maxs.
Desarrollo su algoritmo adaptativo para redes neuronales las cuales son una
versión mas general de la regla del perceptron.
Esta regla es también llamada de momento adaptativo o algoritmo de Mays.
Donde Wk es menor a dk-1/k siendo “d” la respuesta deseada y “y” la salida de la
red por lo general la “y” es un valor pequeño y si vale 0 el algoritmo uno de Mays
se convierte en la regla del perceptron. (6,4,6,6)
10
ACCELERATION AND STABILIZACION OF SUPERVISED GRADIENT
TRAINING OF MLPS
AUTOR : Nguyen-Widrow
La regla de aprendizaje del Perceptrón de Rosenblatt y el algoritmo LMS de
Widrow y Hoff fueron diseñados para entrenar redes de una sola capa. Estas
redes solo pueden resolver problemas linealmente separables. Una red multicapa,
en cambio, podría potencialmente solucionar este problema. Backpropagation es
un algoritmo de aprendizaje supervisado para redes multicapa que utiliza un ciclo
propagación – adaptación de dos fases: (1,1,2,6)
1. Propagación hacia delante: Se aplica un patrón a la entrada de la red como
estímulo y se propaga desde la primera capa a través de las capas superiores de
la red, hasta generar una salida. (1,1,2,6)
2. Retro propagación de los errores: A continuación, la señal de salida se compara
con la salida deseada y se calcula una señal de error para cada una de las
salidas. Las salidas de error se propagan hacia atrás, partiendo de la capa de
salida, hacia todas las neuronas de la capa oculta que contribuyen directamente a
la salida. Sin embargo las neuronas de la capa oculta solo reciben una fracción de
la señal total del error, basándose aproximadamente en la contribución relativa
que haya aportado cada neurona a la salida original. Este proceso se repite, capa
por capa, hasta que todas las neuronas de la red hayan recibido una señal de
error que describa su contribución relativa al error total. Basándose en la señal de
error percibida, se actualizan los pesos de conexión de cada neurona, para hacer
que la red converja hacia un estado que permita clasificar correctamente todos los
patrones
de
entrenamiento.
(1,2,1,5)
La importancia de este proceso consiste en que, a medida que se entrena la red,
las neuronas de las capas intermedias se organizan a sí mismas de tal modo que
las distintas neuronas aprenden a reconocer distintas características del espacio
11
total de entrada. Después del entrenamiento, cuando se les presente un patrón
arbitrario de entrada que contenga ruido o que esté incompleto, las neuronas de la
capa oculta de la red responderán con una salida activa si la nueva entrada
contiene un patrón que se asemeje a aquella característica que las neuronas
individuales hayan aprendido a reconocer durante su entrenamiento. Y a la
inversa, las unidades de las capas ocultas tienen una tendencia a inhibir su salida
si el patrón de entrada no contiene la característica para reconocer, para la cual
han
sido
entrenadas.
(1,1,5,10)
Inicialización de la Red
La elección de los pesos y bias iniciales influirá en si la red llega al óptimo global o
no, y cómo de rápido converge. En la fase de aprendizaje, el cambio en el peso de
la neurona A a la B depende de la derivada de la función de activación de B, y de
la activación de A. Por este motivo es importante evitar pesos iniciales que hagan
próxima a cero las activaciones o sus derivadas. De esta forma, los pesos y bias
iniciales no deben ser muy grandes (para evitar que las neuronas se saturen y por
tanto su derivada sea 0), ni muy bajas (para evitar que las activaciones sean
próximas a 0).Inicialización Aleatoria. Esta estrategia consiste en elegir todos los
pesos y bias de manera aleatoria entre -0.5 y 0.5 (o entre -1 y 1). (1,2,3,5)
INICIALIZACIÓN DE NGUYEN-WIDROW
Esta estrategia sirve para inicializar los pesos vij (entre neuronas de entrada y
neuronas ocultas), y se puede utilizar cuando la función de activación de las
neuronas ocultas es la sigmoide bipolar. Este método busca optimizar la velocidad
de aprendizaje de las neuronas ocultas. (2,1,1,4)
12
El algoritmo es el siguiente:
1. Calcular (recordar que n es el número de neuronas de entrada, y p el número
de neuronas ocultas).
2. Para cada neurona oculta j, calcular el peso preliminar vij (prel) para todas sus
conexiones con las neuronas de entrada i. Cada vij (prel) se elige aleatoriamente
en el intervalo [-0.5, 0.5]
3. Computar
4. Inicializar cada peso:
5. Inicializar el bias con un valor escogido aleatoriamente en el intervalo. (4,2,6,14)
Función de Activación
La función de activación en una red de red de retropropagación debe cumplir
varias cosas:
1. Debe ser continua
2. Debe ser diferenciable (y a ser posible, esta derivada debe ser fácil de calcular)
3. Debe ser monotónica no decreciente.
Una de las funciones de activación típicas es la función sigmoidal binaria:
Como se puede observar, su rango es (0,1). Además se puede demostrar
fácilmente que su derivada respecto a x. (2,2,2,4)
TASA DE APRENDIZAJE Y FACTOR MOMENTO
El valor de la tasa de aprendizaje (η) controla el tamaño del cambio de los pesos
en cada iteración. Se deben evitar dos extremos: un ritmo de aprendizaje
demasiado pequeño puede ocasionar una disminución importante en la velocidad
de convergencia y la posibilidad de acabar atrapado en un mínimo local; en
cambio, un ritmo de aprendizaje demasiado grande puede conducir a
inestabilidades en la función de error, lo cual evitará que se produzca la
convergencia debido a que se darán saltos en torno al mínimo sin alcanzarlo.
13
Por tanto, se recomienda elegir un ritmo de aprendizaje lo más grande posible sin
que provoque grandes oscilaciones. En general, el valor de la tasa de aprendizaje
suele estar comprendida entre 0.05 y 0.5. El factor momento (α) acelera la
convergencia de los pesos. Suele tomar un valor próximo a 1 (por ejemplo, 0.9).
Función de activación de las neuronas ocultas y de salida (4,1,3,14)
Hay dos formas básicas que cumplen esta condición: la función lineal (o identidad)
y la función sigmoidal (logística o tangente hiperbólica).
14
Para aprovechar la capacidad de las NN de aprender relaciones complejas o no
lineales entre variables, se recomienda la utilización de funciones no lineales al
menos en las neuronas de la capa oculta. Por tanto, en general se utilizará una
función sigmoidal (logística o tangente hiperbólica) como función de activación en
las neuronas de la capa oculta. La elección de la función de activación en las
neuronas de la capa de salida dependerá del tipo de tarea impuesto.
En tareas de clasificación, las neuronas normalmente toman la función de
activación sigmoidal. En cambio, en tareas de predicción o aproximación de una
función, generalmente las neuronas toman la función de activación lineal.
(4,1,14,24)
15
SESGO
El análisis sesgo-varianza es una herramienta fundamental para comprender el
comportamiento de cualquier algoritmo de estimación. Dicho análisis resulta una
técnica natural en el problema de regresión con pérdida cuadrática debido a las
propiedades de esta pérdida. (1,2,1,4)
En relación con el problema de clasificación con pérdida 0-1, se han propuesto
diferentes descomposiciones del error de predicción tratando de emular la
descomposición sesgo-varianza del problema de regresión mínimo cuadrática.
El sesgo tiene la función de hacer que el resultado varié, que este mismo
comience a acercarse más a cualquiera de los patrones de entrada que se
necesiten separar hablamos de el sesgo como la varianza en cada red neuronal,
este mismo provocara que la línea que grafica el resultado sea elevada conforme
a los valores del bías haciendo el deslizamiento de esta misma sobre el eje de las
“y”, o moviéndose por cada uno de los cuadrantes dados los valores de las
ordenadas que el resultado maneje, Un nombre con el cual es más conocido es
por el bias este mismo desempeñando un rol principal dentro de una red neuronal
logrando este efecto en la salida así como colaborando para que este resultado
sea favorable. (1,4,4,15)
La importancia de este proceso consiste en que, a medida que se entrena la red,
las neuronas de las capas intermedias se organizan a sí mismas de tal modo que
las distintas neuronas aprenden a reconocer distintas características del espacio
total de entrada. Después del entrenamiento, cuando se les presente un patrón.
Arbitrario de entrada que contenga ruido o que esté incompleto, las neuronas de la
capa oculta de la red responderán con una salida activa si la nueva entrada
contiene un patrón que se asemeje a aquella característica que las neuronas
individuales hayan aprendido a reconocer durante su entrenamiento. Y a la
inversa, las unidades de las capas ocultas tienen una tendencia a inhibir su salida
16
si el patrón de entrada no contiene la característica para reconocer, para la cual
han sido entrenadas. (2,1,9,15)
BACKPROPAGATION
Esta red aprovecha la naturaleza paralela de las redes neuronales para reducir el
tiempo requerido en el procesador secuencial y así determinar la correspondencia
entre unos patrones dados. Además el tiempo de desarrollo de cualquier sistema
que se esté tratando de analizar se puede reducir como consecuencia de que la
red puede aprender el algoritmo correcto sin que alguien tenga que deducir por
anticipación el algoritmo en cuestión. (2,5,11,15)
El algoritmo de la Backpropagation para redes multicapa es una generalización del
algoritmo LMS, ambos algoritmos realizan su labor de actualización de peso y
ganancias con base al erro cuadrático medio. La red Backpropagation trabaja bajo
aprendizaje supervisado y por tanto necesita un set de entrenamiento que
describa cada salida y su valor de la salida esperando de la siguiente forma.
(2,5,16,20)
{P1,t1},{ P2,t2} …….{ PQ1,tQ}
Donde PQ es una de la entrada de la red y tQ esla correspondiente salida deseada
para el patron q-esimo. El algoritmo debe ajustar los parametros de la red para
minimizar el error medio cuadratico. (2,6,1,5)
El algoritmo backpropagation es el método de entrenamiento más utilizado en
redes con conexión hacia delante. Es un método de aprendizaje supervisado de
gradiente descendente, en el que se distinguen claramente dos fases: primero se
aplica un patrón de entrada, el cual se propaga por las distintas capas que
componen la red hasta producir la salida de la misma. Esta salida se compara con
la salida deseada y se calcula el error cometido por cada neurona de salida. Estos
errores se transmiten hacia atrás, partiendo de la capa de salida, hacia todas las
neuronas de las capas intermedias. Cada neurona recibe un error que es
17
proporcional a su contribución sobre el error total de la red. Basándose en el error
recibido, se ajustan los errores de los pesos sinápticos de cada neurona.
(2,6,7,16)
CÓDIGO DEL PROGRAMA
import java.lang.Math;
import javax.swing.JOptionPane;
public class Prueba2 {
//user defineable variables
public static int numEpochs = 500; //number of training cycles
public static int numInputs = 3; //number of inputs - this includes the input bias
public static int numHidden = 4; //number of hidden units
public static int numPatterns = 4; //number of training patterns
public static double LR_IH = 0.7; //learning rate
public static double LR_HO = 0.07; //learning rate
//process variables
public static int patNum;
public static double errThisPat;
public static double outPred;
public static double RMSerror;
//training data
public static double[][] trainInputs = new double[numPatterns][numInputs];
public static double[] trainOutput = new double[numPatterns];
//the outputs of the hidden neurons
public static double[] hiddenVal = new double[numHidden];
//the weights
public static double[][] weightsIH = new double[numInputs][numHidden];
public static double[] weightsHO = new double[numHidden];
//==============================================================
//********** THIS IS THE MAIN PROGRAM **************************
//==============================================================
public static void main(String[] args)
{
//initiate the weights
18
initWeights();
//load in the data
initData();
//train the network
for(int j = 0;j <= numEpochs;j++)
{
for(int i = 0;i<numPatterns;i++)
{
//select a pattern at random
patNum = (int)((Math.random()*numPatterns)-0.001);
//calculate the current network output
//and error for this pattern
calcNet();
//change network weights
WeightChangesHO();
WeightChangesIH();
}
//display the overall network error
//after each epoch
calcOverallError();
System.out.println("epoch = " + j + " RMS Error = " + RMSerror);
}
//training has finished
//display the results
displayResults();
}
//============================================================
//********** END OF THE MAIN PROGRAM **************************
//=============================================================
//************************************
public static void calcNet()
{
//calculate the outputs of the hidden neurons
//the hidden neurons are tanh
for(int i = 0;i<numHidden;i++)
19
{
hiddenVal[i] = 0.0;
for(int j = 0;j<numInputs;j++)
hiddenVal[i] = hiddenVal[i] + (trainInputs[patNum][j] * weightsIH[j][i]);
hiddenVal[i] = tanh(hiddenVal[i]);
}
//calculate the output of the network
//the output neuron is linear
outPred = 0.0;
for(int i = 0;i<numHidden;i++)
outPred = outPred + hiddenVal[i] * weightsHO[i];
//calculate the error
errThisPat = outPred - trainOutput[patNum];
}
//************************************
public static void WeightChangesHO()
//adjust the weights hidden-output
{
for(int k = 0;k<numHidden;k++)
{
double weightChange = LR_HO * errThisPat * hiddenVal[k];
weightsHO[k] = weightsHO[k] - weightChange;
//regularisation on the output weights
if (weightsHO[k] < -5)
weightsHO[k] = -5;
else if (weightsHO[k] > 5)
weightsHO[k] = 5;
}
}
//************************************
public static void WeightChangesIH()
//adjust the weights input-hidden
{
for(int i = 0;i<numHidden;i++)
{
for(int k = 0;k<numInputs;k++)
{
double x = 1 - (hiddenVal[i] * hiddenVal[i]);
x = x * weightsHO[i] * errThisPat * LR_IH;
x = x * trainInputs[patNum][k];
20
double weightChange = x;
weightsIH[k][i] = weightsIH[k][i] - weightChange;
}
}
}
//************************************
public static void initWeights()
{
for(int j = 0;j<numHidden;j++)
{
weightsHO[j] = (Math.random() - 0.5)/2;
for(int i = 0;i<numInputs;i++)
weightsIH[i][j] = (Math.random() - 0.5)/5;
}
}
//************************************
public static void initData()
{
System.out.println("initialising data");
// the data here is the XOR data
// it has been rescaled to the range
// [-1][1]
// an extra input valued 1 is also added
// to act as the bias
trainInputs[0][0] = 1;
trainInputs[0][1] = -1;
trainInputs[0][2] = 1;//bias
trainOutput[0] = 1;
trainInputs[1][0] = -1;
trainInputs[1][1] = 1;
trainInputs[1][2] = 1;//bias
trainOutput[1] = 1;
trainInputs[2][0] = 1;
trainInputs[2][1] = 1;
trainInputs[2][2] = 1;//bias
trainOutput[2] = -1;
trainInputs[3][0] = -1;
trainInputs[3][1] = -1;
trainInputs[3][2] = 1;//bias
trainOutput[3] = -1;
21
}
//************************************
public static double tanh(double x)
{
if (x > 20)
return 1;
else if (x < -20)
return -1;
else
{
double a = Math.exp(x);
double b = Math.exp(-x);
return (a-b)/(a+b);
}
}
//************************************
public static void displayResults()
{
for(int i = 0;i<numPatterns;i++)
{
patNum = i;
calcNet();
System.out.println("pat = " + (patNum+1) + " actual = " + trainOutput[patNum]
+ " neural model = " + outPred);
}
}
//************************************
public static void calcOverallError()
{
RMSerror = 0.0;
for(int i = 0;i<numPatterns;i++)
{
patNum = i;
calcNet();
RMSerror = RMSerror + (errThisPat * errThisPat);
}
RMSerror = RMSerror/numPatterns;
RMSerror = java.lang.Math.sqrt(RMSerror);
}
22
COMENTARIOS
Comentario 1.
La red adaline tiene la desventaja de solo llevar a cabo soluciones con problemas
linealmente separables ya que solo es capaz de procesar entradas binarias por lo
que frecuentemente es utilizada por el análisis de patrones.
Uno de los ejemplos que encontré hace referencia a a su uso en algunas
predicciones meteorológicas en el que al determinar si un fenómeno ocurre le da
un valor le uno, por el contrario, si no ocurre le asigna un valor de cero, cuando se
logran ingresar diferentes entradas (humedad, corrientes atmosféricas, etc.) se
logra una predicción del clima que como sabemos no es cien por ciento certera,
pero tiene muy altas probabilidades de exacta, lo que viene siendo muy útil.
Este tipo de red tiene muchas utilidades ya que aunque algunos no la consideran
una red porque solo cuenta con un elemento de procesamiento, se han podido
implementar redes más complejas.
A comparación del perceptrón eta red hace uso de una regla de corrección de
error, lo que hace que sus salidas sean más exactas (resultado esperado respecto
a resultado deseado). (José Alberto Cruz Castro)
Comentario 2.
La red Backpropagation es muy útil debido a que aprovecha su forma en que está
creada, para reducir el tiempo del proceso secuencial de la información el cual
determina la correspondencia entre los patrones ingresados, además el tiempo de
desarrollo de cualquier sistema que se esté tratando de analizar se puede reducir
debido a que
red puede aprender el algoritmo correcto sin que nadie tenga
deducirlo antes.
Esta es una red de aprendizaje supervisado la cual nos ayuda a saber cómo se
propagan los valores ingresados desde la primera capa y continua a través de las
23
capas superiores de la red donde su proceso consiste en medida a la entrada de
la red, de tal manera que las neuronas se organizan de un modo que aprenden a
reconocer distintas características del espacio de entrada. La señal de la salida se
compara con la salida deseada y utilizando ambas señales se calcula una señal
de error para cada una de las salidas, donde esta salida es prácticamente un
margen de error entre las señales. (José Carlos Secundino Macedonio)
Comentario 3.
Debido a muchas desventajas que tuvieron la redes neuronales por no resolver
problemas mas complejos que los problemas linealmente separables, esto
conlleva a los investigadores a seguir investigando como resolver este tipo de
problemas ya que los entrenamientos de las redes de una sola capa y sus reglas
de aprendizaje fueron diseñados por LMS de Windrow Holf.
Posteriormente a esto las investigaciones fueron incrementando hasta que en
1974 Paul Werbos se encargó de desarrollar un contexto general para cualquier
tipo de red, este se puede aplicar a redes neuronales especiales.
Pero este algoritmo fue descartado por los programadores o desarrolladores de
estas, pero por los años 80’s cuando el algoritmo de propagación inversa
(BackPropagation), fue descubierto por los desarrolladores, esto conllevo a la Red
de Propagación Inversa a ser una de las mas aplicadas y mas utilizadas hoy en
dia…
La BlackPropagation es una red de aprendizaje supervisado , que emplea un
ciclo de propagación ósea tiene la funcionalidad de adaptación de dos faces. Esto
quiere decir que una ves que recibe un estimulo en la entrada este se propaga por
cada capa por las capas superiores hasta llegar a la capa de salida y esta se
compara con la deseada y se calcula una señal de error para cada una de las
salidas, y a subes estas se propagan hacia atrás contribuyendo al resultado de la
salida repitiendo el proceso en cada una de las capas hasta que la red obtenga
una señal de error completa el, dependiendo la señal de error que percibe la red
24
actualizará los pesos de la conexión de cada neurona para que la red permita
clasificar concretamente cada una de los patrones de entrenamiento. (Carlos
Martínez López)
REFERENCIAS
[1] Algoritmo Backpropagation para Redes Neuronales: conceptos y aplicaciones,
pp 5-7 disponible en:
http://www.repositoriodigital.ipn.mx/bitstream/handle/123456789/8628/Archivo%20
que%20incluye%20portada,%20%C3%ADndice%20y%20texto.pdf?sequence=1
[2] Domingos, P. (2000). " Bias-Varianza su Descomposición y sus Aplicaciones".
Morgan Kauffman, pp 231-238.
[3] Laurene Fausett, Prentice Hall, Fundamentals of Neural Networks 1994 pp 412.
[4] Hiera J.R., Martinez V.J. Addison-Wesley iberoamericana, ra-ma, Redes
neuronales artificiales fundamentos, momentos y aplicaciones 2003
[5] Simon Haykin, Prentice Hall. Neural Networks A Comprehensive Foundation
199
25
Descargar