Tarea 2:  Redes a Capas


Experimento 1: Clasificación de patrones:

se pretende lograr la clasificación de puntos en un plano pertenecientes a tres regiones predeterminadas (A, B, C). Estas regiones se definen en la figura siguiente consistente de dos círculos concéntricos (centro en [0.5, 0.5]) y de radios respectivos 0.5 y 0.25 contenidos en una región cuadrada de lado unitario:

problema1
Los patrones de entrenamiento se deben generar  aleatoriamente de las regiones A, B, C.  Se entiende por patrón un punto dentro del cuadrado unitario clasificado como A, B, o C.  Estos patrones deben ser generados de la manera más uniformemente posible.

La red ha de entrenarse (configurándola por ensayo y error) de tal forma que se aprendan la clasificación. Esto ha de realizarse para dos conjuntos de entrenamiento: de 500 y de 1000 datos.

La validación del aprendizaje, en cada caso, ha de mostrarse visualmente tomando puntos (aproximadamente 10000 = 100 x 100) de un barrido completo de la región cuadrada y coloreando cada punto con un color dependiendo de la clasificación que arroje la red.

Mostrar los resultados obtenidos para ambos conjuntos de datos (500 y 1000 puntos), buscar la red más pequeña que resuelva el problema.  Escribir en el informe sus observaciones, a la hora de validar la red entrenada, calidad de los resultados, capacidad de generalización de la red, complejidad del entrenamiento., agregar sus propios comentarios y decisiones a la hora de experimentar.

Nota: Realizar el experimento primero con el conjunto de 1000 puntos, con el que se llega a la solución más rápido.  Tener cuidado al generar el conjunto de patrones de entrenamiento, debe ser lo más uniforme posible.

Experimento 2: Reconocimiento de patrones:

Los patrones de entrada son letras representadas en matrices de 5x7, se tendrán entonces como capa de entrada 35 U.P.

La red será entrenada con 26 patrones correspondientes a las letras del alfabeto.  La capa de salida será de 26 U.P. una por cada letra, la de mayor activación será la ganadora. Con esta forma de representar la salida se puede observar, cuando un patrón contaminado con ruido intenta activar otras neuronas de la capa de salida.   

Una vez entrenada la red deberá ser capaz de reconocer el patrón de entrada original y contaminado con ruido aleatorio.

letras         esquema


La data de entrenamiento se encuentra en el archivo letras.dat , la data se encuentra en dicho archivo originalmente de manera binaria,  el 0 corresponde a un pixel de color blanco y el 1 corresponde al pixel en negro.  Se deberá entrenar la red de las siguientes maneras.

Primero caso: Binario, la entrada  [0,1] y salida real de [0,1] se debe decidir cual es la de mayor activación (la ganadora).

Segundo caso:
Bipolar, la entrada  [-1,1] y salida real de [-1,1] se debe decidir cual es la de mayor activación (la ganadora).

Tercer caso: Entradas reales en el intervalo (-1,1).  Si la entrada es +1 corresponderá con el color negro y el –1 con el color blanco, y existirá toda la gama de tonalidades de grises.  La salida será real [-1,1].

Para todos los casos la red que resuelva el problema deberá poseer el menor número posible de U.P. en la capa escondida, esto se debe hacer por ensayo y error, se deberá colocar en el informe la manera en que llego a esta configuración final.

A la hora de experimentar, se debe hacer una gráfica para cada caso (binario, bipolar y real).  Primero, presentar la data a la red sin contaminar y observar si reconoce bien el patrón, luego tomar cada letra y contaminarla con ruido del 10%, esto es hacer un barrido pixel a pixel y decidir si la probabilidad es menor que 0.1 (10%) cambiar el pixel, sino dejarlo igual, luego presentar el patrón contaminado a la red.  Realizar este proceso unas 20 veces por cada letra y promediar las veces que la red reconoce la letra, graficar el error cometido.  Realizar el mismo experimento con un ruido de 20% y de 30%.  

Para el caso de data real, luego de haber decidido si se contamina el pixel, se debe elegir el grado de contaminación, esto se puede hacer eligiendo al azar un número real entre -1 y 1

Otra prueba que se puede realizar es alterar el patrón de entrada paulatinamente (la letra presentada) y observar hasta cuando es reconocida.  Observar casos extremos, por ejemplo: la A y la R, la  E y la B, etcétera.  
 
Comentar las gráficas obtenidas y los experimentos realizados.

Experimento 3: El juego de la "Vieja"

Consiste en entrenar las redes para que propongan jugadas razonables (en lo posible buenas) en distintas etapas del juego de la "Vieja" (Tic Tac Toe). Este juego se realiza entre dos jugadores en un tablero cuadrado de 3 x 3 posiciones. Sucesiva y alternativamente cada jugador coloca una ficha (0 para un jugador y X para el otro) en una de las nueve posiciones desocupada. El juego se inicia con el tablero vacio de fichas y el objetivo de cada jugador es lograr colocar tres de sus fichas en una linea (horizontal, vertical o diagonal). El juego concluye cuando algun jugador logra su objetivo o cuando se llena el tablero de fichas. Algunas instancias de un  juego se muestran a continuación:

 

Usar el siguiente archivo de entrenamiento: trainingset.txt el cual tiene 27 entradas binarias seguidas de la salida representada por 9 bits.

Para cada posición en el tablero se tiene una codificación de 3 bits, 100 indica una X, 010 indica un O, 001 indica que la casilla esta vacía. El tablero es representado por filas, un ejemplo es el siguiente:

Cuya represnetación binaria es:

010 100 001 100 100 010 010 010 100 001000000000

El string 001000000000 se refiere a la salida deseada, es la posición del tablero que queda por jugar.

Nota: Esta información fue obtenida de la siguiente dirección: TicTacToe donde podran encontrar al final una clase de java para dibujar el tablero.

 

 

Fecha tope de entrega: Jueves de la semana 8.