November 16, 2012

Entrenamiento perceptrón. Fase 2

Entrenamiento de perceptrón

En esta fase lo que se realiza es proporcionale al perceptrón la salida que queremos obtener (salida deseada), el perceptrón se encarga de ajustar/ modificar pesos para obtener esa salida.

Aquí un poco de teoría para comprender mejor como funciona esto....

Para que el el perceptrón pueda clasificar o arrojar la salida deseada se le debe proporcionar la salida deseada en la entrada de la neurona. Como la salida es dada por el vector de pesos y el umbral, entonces es necesario ajustar/modificar éstos para obtener esa salida deseada utilizando un método iterativo; en cada iteración se realizan pequeños cambios a los pesos y al umbral hasta conseguir lo requerido para obtener esa salida deseada. A este proceso se le conoce como entrenamiento de la red neuronal

Un entrenamiento supervisado es aquel en el que a la red se le proporciona un vector de entrada ( $x_i$ ) al cual le corresponde un vector de salida deseada ( $t_i$). Se le conoce como entrenamiento supervisado ya que a la red se le dice que resultado esperar y que hace en cada paso.

Veamos un ejemplo para comprender mejor: supongamos que para entrenar un perceptrón utilizamos un vector de entrada ( v ) con la salida deseada t=1 y con un vector de pesos ( w ), los cuales dan como resultado y = 0. Esto quiere decir que no se obtuvo la salida que se desea porque se esperaba un 1 y se obtuvo un 0. Para que el resultado haya sido 0 la activación de la neurona debió haber sido negativa, esto es $w * v $ fue negativo. Para cambiar este resultado hay que ajustar/cambiar el vector de pesos, pero se hace poco a poco no de manera drástica, con el cual producimos un nuevo vector de pesos w' utilizando la siguiente fórmula:

$w'= w + \alpha v$

Donde $\alpha$ es la tasa de aprendizaje con la cual la red hace pequeños cambios a los pesos

Ahora supongamos que como salida deseada queremos t=0 y obtenemos y=1. Esto nos da un escenario distinto donde la activación fue positiva y debió haber sido negativa, ahora necesitamos de igual manera ajustar/modificar los pesos pero ahora utilizamos la siguiente fórmula que no es mas que en vez de suma sea una resta esto porque hay que rotar el sentido en el que apunta el vector de de pesos ( recuerden que un vector tiene dirección y magnitud).

$w'= w + \alpha v$

Aquí una imagen para comprender mejor el porqué de los cambios:


Para realizar el entrenamiento hay que combinar estas dos fórmulas, con lo cual obtenemos lo siguiente:

$w'= \alpha (t - y)v$

Un algoritmo para realizar este entrenamiento es el siguiente:
repetir
   (for)para cada vector de entrada (v,t) //v = vector de entrada, t = salida deseada
   evaluar la salida 'y' para la entrada 'v'
   if y ≠ t
       hacer un nuevo vector de pesos // w'
   else
       no se ajustan/modifican pesos
   termina if
   termina for
hasta que y = t para cada vector

Procedimiento:
El siguiente script lo que realiza es generar de manera aleatoria los vectores de entrada, pesos y un vector de condición con el cual se genera la salida deseada ya que en este caso no está aplicado en un problema específico. Si la salida actual no es igual a la deseada los pesos se vuelven a calcular utilizando la fórmula mostrada anteriormente.

Código en Python:


No comments:

Post a Comment