Universidad Rey Juan Carlos Inteligencia Artificial Ingenierı́a Informática Hoja de Problemas 9 Redes neuronales Curso 2011–2012 1. Un banco quiere clasificar los clientes potenciales en fiables o no fiables. El banco tiene un dataset de clientes antiguos, con los siguientes atributos: Estado civil: {casado/a, soltero/a, divorciado/a} Género: {varón, mujer} Edad: { [18 − 30], [30 − 50], [50 − 65], [65+]} Ingresos: { [10K − 25K], [25K − 50K], [50K − 65K], [65K − 100K], [100K+]} Diseñar una red neuronal que se podrı́a entrenar para predecir si un cliente es fiable o no. Solución Una red neuronal trabaja con entradas y salidas simbólicas, es decir cada neurona tendrá como entrada o salida un bit, 0 o 1. Como tenemos que clasificar clientes fiables o no, nuestra red tendrá una sola neurona de salida, 0 = no f iable, 1 = f iable. Por lo que se refiere a las entradas, tenemos Estado civil: 3 valores, que se pueden expresar con dos neuronas, 00 = casado/a, 01 = soltero/a, 10 = divorciado/a Género: 2 valores, que se pueden expresar con una neuronas, 0 = varón, 1 = mujer Edad: 4 valores, que se pueden expresar con dos neuronas,00 = [18 − 30], 01 = [30 − 50], 10 = [50 − 65], 11 = [65+] Ingresos: 5 valores, que se pueden expresar con tres neuronas,000 = [10K − 25K], 001 = [25K − 50K], 010 = [50K − 65K], 011 = [65K − 100K], 100 = [100K+] La red resultante será: Página 1 de 7 Hoja de Problemas 9 Redes neuronales Página 2 de 7 Hoja de Problemas 9 Redes neuronales 2. Una empresa de videojuegos está desarrollando un FPSG (first person shooting game). Para implementar los personajes artificiales del juego, el jefe de proyecto, ex estudiante del curso de IA en la URJC, ha pensado que podrı́a ser interesante e innovador utilizar una red neuronal. Dicha red tendrá que implementar el algoritmo de control de los personajes artificiales, usando los siguientes inputs: Salud: de 0 (débil) a 2 (fuerte) Tiene cuchillo: 0 si no lo tiene, 1 si lo tiene Tiene arma: 0 si no la tiene, 1 si la tiene Enemigos: número de enemigos en el campo visual Las acciones que el personaje puede ejecutar son: Esconderse Atacar Escapar Andar (a) Diseñar una red neuronal que se podrı́a entrenar para implementar el algoritmo de control de los personajes artificiales. Solución Las entradas son 2 bits para salud (00=débil, 01=medio, 10=fuerte), 1 bit para Tiene cuchillo, 1 bit para Tiene arma y 3 bits para Enemigos (podemos tener de 000=0 enemigos a la vista hasta 111=8 o más enemigos). Tenemos que representar 4 acciones (=clases), por lo tanto necesito 2 neuronas de salida, donde 00=esconderse, 01=atacar, 10=escapar, y 11=andar. Mi red por lo tanto podrı́a ser como la en figura a. Página 3 de 7 Hoja de Problemas 9 Redes neuronales (b) Considera el siguiente vector de input: x=[Salud=2, Tiene cuchillo=0, Tiene arma=1, Enemigos=2] y la salida deseada y=Atacar Inicializa los pesos de la capa oculta con el valor 0.1, los pesos de la capa de salida con 0.2, y el umbral de las funciones de activación con el valor 0.5, y aplica la propagación hacia atrás del error (α = 0,1), usando el elemento del conjunto de entrenamiento definido arriba e indicando como cambian los pesos. Solución La entrada corresponde al vector x=1001010, y la salida corresponde al vector y=01. Calculamos primero la salidas de la neuronas de la capa oculta o1 = 0 (1 · 0,1 + 0 · 0,1 + 0 · 0,1 + 1 · 0,1 + 0 · 0,1 + 1 · 0,1 + 0 · 0,1 = 0,3 < 0,5) o2 = 0 (1 · 0,1 + 0 · 0,1 + 0 · 0,1 + 1 · 0,1 + 0 · 0,1 + 1 · 0,1 + 0 · 0,1 = 0,3 < 0,5) o3 = 0 (1 · 0,1 + 0 · 0,1 + 0 · 0,1 + 1 · 0,1 + 0 · 0,1 + 1 · 0,1 + 0 · 0,1 = 0,3 < 0,5) Calculamos ahora las salidas de las neuronas de la capa de salida y1 = 0 (0 · 0,2 + 0 · 0,2 + 0 · 0,2 = 0 < 0,5) y2 = 0 (0 · 0,2 + 0 · 0,2 + 0 · 0,2 = 0 < 0,5) La salida deseada era y1 = 1, y2 = 0 por lo tanto los valores de errores son ey1 = 1 − 0 = 1 ey2 = 0 − 0 = 0 Calculamos como se modifican los pesos entre las neuronas de la capa oculta y las neuronas de la capa de salida ∆o1y1 = α · ey1 · o1 = 0,1 · 1 · 0 = 0 ∆o2y1 = α · ey1 · o2 = 0,1 · 1 · 0 = 0 ∆o3y1 = α · ey1 · o3 = 0,1 · 1 · 0 = 0 ∆o1y2 = α · ey2 · o1 = 0,1 · 0 · 0 = 0 ∆o2y2 = α · ey2 · o2 = 0,1 · 0 · 0 = 0 ∆o3y2 = α · ey2 · o3 = 0,1 · 0 · 0 = 0 Por lo tanto los pesos entre las neuronas de la capa oculta y las neuronas de la capa de salida no se modifican. Vamos ahora a definir el error para las neuronas de la capa oculta eo1 = 0,2 · ey1 + 0,2 · ey2 = 0,2 · 1 + 0,2 · 0 = 0,2 eo2 = 0,2 · ey1 + 0,2 · ey2 = 0,2 · 1 + 0,2 · 0 = 0,2 eo3 = 0,2 · ey1 + 0,2 · ey2 = 0,2 · 1 + 0,2 · 0 = 0,2 Página 4 de 7 Hoja de Problemas 9 Redes neuronales Calculamos como se modifican los pesos entre las entradas y las neuronas de la capa oculta 1001010 ∆x1o1 = α · eo1 · x1 = 0,1 · 0,2 · 0 = 0 ∆x1o2 = α · eo2 · x1 = 0,1 · 0,2 · 0 = 0 ∆x1o3 = α · eo3 · x1 = 0,1 · 0,2 · 0 = 0 ∆x2o1 = α · eo1 · x2 = 0,1 · 0,2 · 1 = 0,02 ∆x2o2 = α · eo2 · x2 = 0,1 · 0,2 · 1 = 0,02 ∆x2o3 = α · eo3 · x2 = 0,1 · 0,2 · 1 = 0,02 ∆x3o1 = α · eo1 · x3 = 0,1 · 0,2 · 0 = 0 ∆x3o2 = α · eo2 · x3 = 0,1 · 0,2 · 0 = 0 ∆x3o3 = α · eo3 · x3 = 0,1 · 0,2 · 0 = 0 ∆x4o1 = α · eo1 · x4 = 0,1 · 0,2 · 1 = 0,02 ∆x4o2 = α · eo2 · x4 = 0,1 · 0,2 · 1 = 0,02 ∆x4o3 = α · eo3 · x4 = 0,1 · 0,2 · 1 = 0,02 ∆x5o1 = α · eo1 · x5 = 0,1 · 0,2 · 0 = 0 ∆x5o2 = α · eo2 · x5 = 0,1 · 0,2 · 0 = 0 ∆x5o3 = α · eo3 · x5 = 0,1 · 0,2 · 0 = 0 ∆x6o1 = α · eo1 · x6 = 0,1 · 0,2 · 0 = 0 ∆x6o2 = α · eo2 · x6 = 0,1 · 0,2 · 0 = 0 ∆x6o3 = α · eo3 · x6 = 0,1 · 0,2 · 0 = 0 ∆x7o1 = α · eo1 · x7 = 0,1 · 0,2 · 1 = 0,02 ∆x7o2 = α · eo2 · x7 = 0,1 · 0,2 · 1 = 0,02 ∆x7o3 = α · eo3 · x7 = 0,1 · 0,2 · 1 = 0,02 3. Sea la red neuronal en figura, supón que la función de activación de las neuronas 1,2,3,4 y 5 sea la función umbral, que devuelve 1 si las suma pesada de las entradas es mayor que T , 0 en caso contrario. Dado el siguiente elemento del conjunto de entrenamiento: (x,y) = (x=[E1=0.6, E2=0.1], y=[4=0, 5=1]) donde el valor la entrada 1 es 0,6, el valor de la entrada 2 es 0,1, la salida de la neurona 4 es 0 y la salida de la neurona 5 es 1. Sea 0,1 la constante de aprendizaje, aplica la propagación hacia atrás del error usando el elemento del conjunto de entrenamiento, indicando como cambian los pesos. Solución Calculamos la salida de las neuronas de la capa oculta Página 5 de 7 Hoja de Problemas 9 Redes neuronales 1 → 0,1 · 0,6 − 0,2 · 0,1 = 0,04 < 0,1 → 0 (1) 2 → 0 · 0,6 + 0,2 · 0,1 = 0,02 < 0,1 → 0 (2) 3 → 0,3 · 0,6 − 0,4 · 0,1 = 0,14 < 0,5 → 0 (3) Calculamos la salida de las neuronas de salida 4 → −0,4 · 0 + 0,1 · 0 + 0,6 · 0 = 0 > −0,1 → 1 (4) 5 → 0,2 · 0 − 0,1 · 0 − 0,2 · 0 = 0 < 0,6 → 0 (5) Calculamos el error de la capa de salida e4 → 0 − 1 = −1 (6) e5 → 1 − 0 = 1 (7) Los pesos wi,4/5 se deberı́an actualizar con la regla wi,4/5 = wi,4/5 + xi · 0,1 · e4/5 pero como todo los xi son 0, los pesos de la capa oculta no se modifican. Calculamos entonces los errores de la capa oculta Página 6 de 7 (8) Hoja de Problemas 9 Redes neuronales e1 → −0,4 · e6 + 0,2 · e7 = 0,6 (9) e2 → 0,1 · e6 − 0,1 · e7 = −0,2 (10) e3 → 0,6 · e6 − 0,2 · e7 = −0,8 (11) el error e1 es positivos, mientras que e2 y e3 son negativos. Entonces los pesos wE1/E2,1 deberı́an aumentar, y los pesos wE1/E2,2 y wE1/E2,3 deberı́an disminuir. Calculamos los nuevos pesos de la capa de entrada wE1,1 = 0,1 + 0,6 · 0,1 · e1 = 0,136 (12) wE2,1 = −0,2 + 0,1 · 0,1 · e1 = −0,194 (13) wE1,2 = 0 + 0,6 · 0,1 · e2 = −0,012 (14) wE2,2 = 0,2 + 0,1 · 0,1 · e2 = 0,198 (15) wE1,3 = 0,3 + 0,6 · 0,1 · e3 = 0,252 (16) wE2,3 = −0,4 + 0,1 · 0,1 · e3 = −0,408 (17) Página 7 de 7