Redes Neuronales en java, Herramienta para redes Neuronales
Neural Networks tool Neural Networks with java Neural Networks tool
Neural Networks tool Neural Networks with java
       
 

 

Introducción
a las Redes Neuronales
API del
Marco de trabajo
Tutorial
Marco de
Trabajo
JRedesNeruonales
Downloads
Hompage
Marco de
trabajo

 


Tutorial para el diseño de una Red Neuronal
3.2
Diseño del Aprendizaje de la red

En este apartado vamos a diseñar el modo en que nuestra red aprende y lo vamos a traducir a nuestro marco de trabajo.

Para ello tendremos que redefinir dos métodos

El primero pertenece a la red hija y se refiere al modo en que la red toma los patrones de la lista y los va usando para actualizar los pesos las sinapsis.

public void aprender(ListaPatrones ps)

Además de este debemos redefinir el método aprender de la sinapsis

public void aprender(double[] parámetros)

Para ello a seguimos el guión del paso anterior pero teniendo en cuenta que las sinapsis son las que aprenden y las neuronas se actualizan.

 

8.3.2.1 El diseño del método de la clase Red : Aprender

A) Especificamos que hace la red en cada paso como en el paso anterior, con esta salvedad
Las sinapsis aprenden cuando les decimos que se actualicen y también que al método aprender le entra una lista de patrones.
Un ejemplo podría se este : un perceptrón
Para cada patrón
- Enviamos el patrón a la capa de entrada.
- Actualizamos las Neuronas de la capa de salida para tener los
resultados predichos
- Les decimos a las sinapsis que unen las capas que se actualicen.


B) La anterior lista de tareas la pasamos a código para actualizar las sinapsis tenemos la siguiente función.

public void aprenderSinapsis(int capaOrigen, int capaDestino, double[] parámetros , int numVeces)
donde
int capaOrigen es la capa de donde salen las sinapsis.
int capaDestino es la capa a la que llegan las sinapsis.
double[] parámetros son los posibles parámetros que le tengamos que pasar a
las sinapsis para que aprenda.
int numVeces si numVeces = 0 se actualizaran todas las sinapsis de la capa
si es mayor que cero se actualizaran numVeces sinapsis aleatorias


un ejemplo podría ser este perceptrón.

public void Aprender(ListaPatrones Ps) {
int i=0; int j =0;Patrón p;

while(i<Ps.NumeroPatrones)
{
p= Ps.Patron(i);
//1. Envío al principio y al final los valores de entrada y de Salida_deseada
CapaEntrada.EnviarPatron(p);
CapaSalida.EnviarSalida(p);
//2. Realizo una ejecución de la red
CapaEntrada.ActualizarSinapsisAdelante();
CapaSalida.ActualizarNeuronas();
//3. Le digo a las sinapsis que se actualicen para ese patrón i
double[] sinParametros = new double [0];
aprenderAdelante(0,2, sinParametros,0);
i++;
}

}

 

8.3.2.1 El diseño del método de la clase Red : Aprender

En este paso especificaremos como se comportara una sinapsis individual cuando se le ordene que aprenda, esto es, que actualice su peso.

Consistira en coger la funcion con la que se actualize los pesos y aplicarsela.

El modo en que se actualizan las sinapsis, la definimos nosotros mismos en la clase sinapsis_hija, redefiniendo el método public void Aprender(double [] parámetros)

Para ello tendremos una serie de funciones que nos darán todos los datos que necesitemos como :
public double neuronaEntradaEstado( )
Devuelve el estado de la neurona que llega, que entra, a la sinapsis

public double neuronaSalidaEstado()
Devuelve el estado de la neurona de sale de la sinapsis

public double neuronaEntradaSalida()
Devuelve la salida deseada de la neurona que llega, que entra, a la
sinapsis

public double neuronaSalidaSalida()
Devuelve la salida deseada de la neurona de sale de la sinapsis.


un ejemplo podría ser este que es el método de aprendizaje del perceptrón

W = W + ( Z-Y)* X * ? con

x = Salida deseada.
y = Salida tras la actualización.
x = entrada.
W = peso.
? = parámetro de regulación.

public void Aprender(double [] parámetros){

double X = neuronaEntradaEstado();
double Y = neuronaSalidaSalida();
double Z = neuronaSalidaEstado();
double ? = 0.05;

Peso=Peso + ( Z-Y)* X * ? ;

}


 
   
   

Seguir en el siguiente apartado >

Introducción - Diseño de la arquitectura - Diseño del Comportamiento
Diseño de la Dinámica de la red - Diseño del Aprendizaje de la red
Las redes Online - Diseño de los patrones - Empaquetado de la red.

 

This Software has been developed by Alfonso Ballesteros Computering Ingenieer by the University of Malaga, Spain as a part of his final
degree proyect with the supervision of D. Enrique Dominguez