Download Solución - Grupo de Inteligencia Artificial

Document related concepts

Osmolaridad wikipedia , lookup

Transcript
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