martes, 20 de noviembre de 2012

Reporte Final

¿Qué se tenía en medio curso?

- Una neurona simple que recibía entradas binarias y agregaba pesos aleatorios. Posteriormente se realizaba la suma del producto de los pesos con las entradas y el resultado se compara con la salida deseada, si éstas no coincidían se hacia un cambio en el vector de pesos.

¿Qué se modifico y/o agrego para el reporte final?

- Método del gradiente
- Regla delta
- Back_propagation
- Red multicapa


Reporte.

Red multicapa (repositorio: neurona_multicapa.py)

Para este reporte, el objetivo era primero que nada hacer que la red neuronal fuera multicapa ¿por qué?, en una red monocapa solo pueden resolverse problemas linealmente separables, en cambio en casos en que se requiera separar clases y se necesiten por lo menos dos líneas para separarlas, debe utilizarse una red multicapa.

Un ejemplo de esto son las funciones lógicas.

AND y OR son funciones linealmente separables:


En cambio, la función XOR no puede ser aprendida por una red monocapa


Para realizar la red multicapa, se utiliza el método del gradiente. Este método es utilizado para minimizar la diferencia entre la salida deseada y la obtenida de la neurona. El método del gradiente se aplica en una función que mide el error  de clasificación de una red neuronal.

La fórmula es la siguiente (en esta fórmula se utiliza el sigmoidal que es igual a la tangente hiperbólica de x):

Donde:





Después de esto se utiliza la regla delta, para entrenar un patrón a la vez.


En este caso, como podemos ver se utiliza la derivada de la sigmoidal y se sigue haciendo la diferencia entre la salida esperada y la obtenida.

Con el algoritmo Back propagation, se puede definir el error total cometido por la red como la suma de los cuadrados de los errores cometidos. El objetivo es minimizar este error utilizando iteraciones para entrenar a redes multicapa.

¿Qué hace este algoritmo? 
- Calcula el error en la salida para cada patrón 
- Ajusta los pesos en la capa de salida para reducir el error. 
- Propaga los errores a la capa de entrada, ajustando los pesos de las capas ocultas, repite este paso de forma iterativa 

Características de Back propagation 
- El algoritmo busca el mínimo de la función error a partir de patrones de entrenamiento 
- Precisa que la función de activación sea diferenciable .
- Entrena, modificando los pesos de la red 
- Los pesos son modificados hacia la dirección descendente de la función error

En el programa que realicé se realiza todo lo anterior. Utilicé las funciones lógicas que mencionaba anteriormente para realizar pruebas de la red neuronal. Implemente XOR para comprobar que la red si funcionaba correctamente.

Implementé también una función sen(x) y trafique los resultados de una función sen(x) normal, y una función sen(x) aproximada con la red neuronal multicapa. 

Los resultados se muestran a continuación:


Se puede ver en la imagen, como la red aprende estas funciones lógicas y trigonométricas. En la imagen se observa cuales son las salidas obtenidas y los valores esperados, y se puede ver que es muy poca la diferencia. 

En la gráfica se observa más claramente, en color Rojo se observa la función aprendida por la red neuronal de sen(x), y en color azul la función real de sen(x).

La idea del proyecto, es que la neurona pueda leer las entradas de las huellas digitales y ser capaz de identificar la huella de una persona y así poder adecuar esto a nuestro proyecto integrador de la página de votaciones.



Referencias:
Libro: An Introduction to Neural Networks, Kevin Gurney.



1 comentario:

  1. Nadie en tu equipo checa su ortografía. 9 por el reporte. 19 por el código, como en el caso de Adán y Daniel.

    ResponderEliminar