martes, 20 de noviembre de 2012

Reporte 2

En este proyecto de redes neuronales sosa se encargo del preprocesamiento y blanca y yo de lo demas y  algunas de las aportaciones que realice fueron:

 -aportaciones a la fase 3

 -aportaciones a la parte de Backpropagation le ayude a mi companera  blanca a realizar el codigo.


 Para lo del backpropagation me base en el siguiente pdf:http://webdelprofesor.ula.ve/economia/gcolmen/programa/redes_neuronales/capitulo2_backpropagation.pdf

 codigo :







Aqui el repositorio del equipo:
https://github.com/iosdsv/Redes-Neuronales--Final-

martes, 9 de octubre de 2012

Reporte #1


Antes de empezar con las aportaciones del proyecto me gustaria mencionar que en nuestro proyecto tratamos de diagnosticar un sindrome llamado "Sindrome de Went" esto por medio de un encefalograma.

Mi aporte al proyecto fue la realización de la neurona en la fase 2:





Código:








ejecuto el programa generando 2000 entradas con un factor de aprendizaje de .05 
y guardo las coordenadas, la salida obtenida y la salida deseada en archivos de texto. , para al final hacer la grafica que queda algo asi, en donde se ve los ceros correcto, unos correcto y el cero incorrecto: 






martes, 28 de agosto de 2012

Neurona en python


Bueno este es programa puede ser usado para que aprenda las compuertas logicas or y and y otras cuantas cosillas que le indiquemos que sean linealmente separables dado que es una sola neurona.

se lleva a cabo de la siguiente manera:

1.-primero te pide la cantidad de entradas y el factor de aprendizaje que podria ser por ejemplo : 0.5

2.- despues se generan los pesos aleatoriamente.

3.- despues se pide que ingrese cada una de las entradas las cuales deben ser 1 o -1(0) y la salida deseada igual 1 o -1(0).

4.- despues se hace una sumatoria de la multiplicacion de cada entrada por cada peso, si el resultado de la sumatoria es mayor o igual a cero la salida correspodiente sera : 1 en caso de que sea menor a cero la salida sera: -1(0) .

5.- por ultimo se verifica que la salida obtenida sea igual a la salida deseada en caso contrario se vuelven a calcular los pesos y se vuleve a probar con las mismas entradas hasta que la salida obtenida sea igual a la salida deseada.

y es de esta forma como este programa puede ser capaz de aprender las compuertas logicas or y and.

codigo:


lunes, 13 de agosto de 2012

Perceptron simple




" Video que demuestra el funcionamiento del programa "


En esta entrada quiero compartirles un ejemplo de perceptron simple hecho en java el cual puede ser usado para que aprenda las compuertas logicas OR y AND.

Este tipo de red puede resolver solamente problemas cuyas salidas estén clasificadas 
en dos categorías diferentes y que permitan que su espacio de entrada sea dividido en regiones linealmente separables:





Las compuertas lógicas AND y OR son linealmente separables, por lo tanto pueden implementarse con un perceptrón. La compuerta lógica XOR no presenta esta característica para esta se tiene que utilizar un perceptron multicapa.


En el siguiente vídeo a partir del minuto 2:40 en adelante se explica paso por paso como se da el aprendizaje de la compuerta lógica OR para un perceptron simple y yo explicare lo mismo pero ya desde un programa hecho en java.


Explicare solo lo mas importante para mas detalles pueden descargarse el código, el codigo ha cambiado un poco solo le agrege una interfaz grafica para que escoger la compuerta logica con la que se probara el perceptron ya sea OR o AND:

  • http://www.mediafire.com/?e788693rqowepoc


Código Fuente:


" Partes Claves del Código Fuente "


 1.- Declaramos las entradas y salidas deseadas:

  • Estructura de las entrada:
Entrada 1, Entrada 2, Umbral
{  x1   ,   x2   ,   -1 }


2.- Declaramos los pesos con los mismos valores que en el vídeo para seguir el ejemplo igual el factor de aprendizaje:




3.- Llamamos al método "funcionActivacion" que recibe por parámetros las primeras 2 entradas (1,1) y se manda también el (-1) para la entrada del umbral y retorna 1 o -1 como lo define la siguiente regla esto que retorne sera la salida obtenida para dichas entradas :






4.- Después se llama al método "error" al  cual se le manda por parámetro la salida deseada y retorna la diferencia de la salida deseada menos la salida obtenida en el método anterior entonces si regresa 0 no hay error en caso contrario si lo hay:





5.- Después si no hay error se sigue con la siguiente entrada(1,-1) y se vuelven a ejecutar los métodos "funcionActivacion" y "error" y si no hay error se sigue con la siguiente entrada (-1,1) ahora si hay error se debe hacer reajuste de pesos llamando al método "calcular pesos" al cual se le manda por parámetros las entradas y la salida deseada:

formula:



Método para Actualizar los Pesos




6.- después de que se  recalculan los pesos se vuelve a pasar todas las entradas desde el inicio al método "funcionActivacion"  y se sigue todo el proceso hasta que ya no salgan errores y al final podremos verificar que realmente aprendió la compuerta lógica OR.                                        





Ideas para proyecto





IDEA 1.
Desarrollar una aplicación que pueda ser una herramienta útil a la hora de hacer un diagnostico medico.

En base a los síntomas(Entradas a la RNA) la red pueda decidir cual enfermedad es la mas probable que tenga(Salidas).

Ademas podria haber otras entradas a la red como historial medico por ejemplo:
-historial de asma
-historial de diabetes
-historial de cancer

Los sintomas junto con el historial medico modificaran la salida de la red.

IDEA 2.
Desarrollar una red neuronal que sea capaz de detectar deficiencias en el sistema inmunologico.

Se entrenaría a la red para que clasifique a la gente con deficiencia o sin deficiencia usando 17 parámetros metabólicos de los linfocitos.

Lenguaje de Programacion: Java