Redes final

Post on 19-Jul-2015

604 views 0 download

Transcript of Redes final

Redes NeuronalesPresentación final

El proyecto...Nuestro proyecto trata sobre el control de la interfaz de Gnome por medio de movimientos de la mano, los cuales serán obtenidos por Kinect y procesados por una red neuronal del tipo supervisada.

En general...Se creó una red neuronal multicapa en python que trabaja con la información recibida por el Kinect y modifica los pesos de manera que obtenemos los valores deseados. La red determina si el movimiento es hacia la izquierda,derecha,arriba,abajo.

Herramientas● Python● Kinect● OpenKinect(librería freenect)

Cómo lo hicimos?● Nuestra red neuronal es de tipo supervisada.● Nuestra red consiste de 3 capas con 2 entradas y 2

salidas.● La capa de entrada recibe las coordenadas (x,y) que se

obtienen desde el kinect, de acuerdo al movimiento que se realice.

● La capa de salida arroja la dirección del movimiento realizado por el usuario (derecha,izquierda,arriba,abajo).

Red SupervisadaLas redes de entrenamiento supervisado utilizan datos para el entrenamiento, los cuales están constituidos por varios pares de patrones de entrenamiento de entrada y de salida. El hecho de conocer la salida implica que el entrenamiento se beneficia de la supervisión de un maestro

Red SupervisadaSe utilizó este tipo de red ya que de antemano se conoce la salida que queremos obtener en base a un movimiento realizado (entrada).

Qué es lo que hicimos?● Se realizó dos script en python. ● La clase principal es Neurona que recibe como

parámetros las coordenadas (x,y) tomadas desde el kinect, las cuales son analizadas en la red.

● Cuenta con una capa oculta para procesar los datos.

● Se usó backpropagation para entrenar la red. ● La clase kinect, la cual obtiene las coordenadas

y las envía a la red neuronal.

Nuestra Red

Pre-procesamientoLa primera etapa que realizamos fue la del pre-procesamiento.

Nuestro pre-procesamiento consta de obtener los valores de las coordenadas del movimiento de la mano o el dedo que detecte Kinect.

Luego de obtener los valores, nosotros solo mostramos a la entrada de la red los valores que realmente se necesitan (valor de x1, valor de x2).

Pre-procesamiento

Entradas...Como entrada a esta neurona utilizamos un arreglo con n coordenadas, cada coordenada consta de un conjunto de coordenadas x,y.

Estas coordenadas x,y son los pixeles en la imagen que detecta el Kinect, el cual solamente detecta una imagen de 640 x 480.

SalidaPara obtener nuestra salida, la cual nos dice si el movimiento es hacia la izquierda o hacia la derecha, se compara con el valor 320 ya que es el valor medio de la ventana.

Por lo tanto si al calcular la sumatoria de las entradas por los pesos el valor obtenido es mayor a 320 es un movimiento a la derecha, si es menor sería clasificado como un movimiento a la izquierda

Salida del programaLa salida que nos importa es la segunda lista. Cada ejecución lanza una respuesta diferente, la cual claramente nos dice que el cálculo del error esta mal.

Complicaciones: BackpropagationEn una red supervisada, el problema surge al momento de entrenarlas ya que sólo se conoce la salida y la entrada de la red, de forma que no se pueden ajustar los pesos sinápticos asociados a las neuronas de las capas ocultas, ya que no podemos inferir a partir del estado de la capa de salida como tiene que ser el estado de las capas ocultas.

BackpropagationEl entrenamiento mediante backpropagation consiste en:● Empezar con unos pesos sinápticos cualquiera

(generalmente elegidos al azar).● Introducir unos datos de entrada (en la capa de

entradas) elegidos al azar entre los datos de entrada que se van a usar para el entrenamiento.

● Dejar que la red genere un vector de datos de salida (propagación hacia delante).

Backpropagation● Comparar la salida obtenida con la salida deseada.● La diferencia obtenida entre la salida generada y la

deseada (denominada error) se utiliza para ajustar los pesos sinápticos de las neuronas de la capa de salidas.

● El error se propaga hacia atrás (backpropagation), hacia la capa de neuronas anterior, y se usa para ajustar los pesos sinápticos en esta capa.

● Se continúa propagando el error hacia atrás y ajustando los pesos hasta que se alcance la capa de entradas.

Fuentes● Libro: Inteligencia Artificial con aplicaciones a la

ingeniería.Ponce Cruz, Pedro.Marcombo.1ª ed● alimanya/backprop● galaxy.agh.edu.pl