You are on page 1of 5

Inteligencia Artificial

Trabajo 2: Red Adaline

Giorgio Luigi Morales Luna

Erick Pacheco Pedraza

20104509A

20101133K
Especialidad de Ingeniería Mecatrónica
Facultad de Ingeniería Mecánica

Considere los patrones de la figura:
-1

-1

-1

1

-1

1

1

1

1

1

-1

-1

1
1

-1
-1

Resuelva el problema de reconocimiento de patrones usando:

TRN de Matlab.
Código puro (Algoritmo)

¿Qué sucede si a la red se le presenta el patrón:

[

]

Solución:
Para resolver el problema planteado se recurrirá a la teoría de reconocimiento de
patrones utilizando dos redes ADALINE (Adaptive Linear Element) debido a la naturaleza
del problema. De esta manera se usarán dos “neuronas” ya que cada una de estas tiene
sólo dos posibles soluciones, luego se procederá a combinar estas redes para poder
generar 4 clases, de modo que ante cualquier entrada esta pueda ser clasificada dentro
de una de las 4 posibles regiones.

net2.7145 1. resultado de aplicar la función hardlims (debido a la data bipolar) a las salidas de la unidad adaline (combinador adaptativo lineal).P. e2=T2-Y2.3514 -0.ID.goal=0. Wo=randn(1. con la función newlin. net2=train(net.ID.1). el desempeño deseado puede alcanzarse en un número de épocas menor.La regla a ser aprendida será la siguiente: Entradas P1 -1 -1 1 1 P2 -1 1 -1 1 P3 -1 1 1 -1 P4 -1 1 -1 -1 T1 -1 -1 1 1 T2 -1 1 -1 1 Clase A B C D Tabla 1 a) Utilizando Toolbox de redes neuronales de Matlab (TRN) : Se crearán las redes neuronales “net” y “net2”. Respuesta ante entrada intrusa: Con ambas redes neuronales entrenadas es posible evaluar el resultado para cualquier entrada.T1.b{1}=tho.LR). net.1.P)).1. net=train(net. a saber: . Por otro lado el TRN nos permite saber que el objetivo se consiguió luego de 6 épocas con un vector de pesos finales de: w= [-0.P)). independientes una de la otra.trainParam.trainParam.4). net2=newlin(P.Y2=hardlims(sim(net2. net=newlin(P. Luego se establece el número de épocas límite de entrenamiento para cada red (300 en este caso). En este caso se considera un vector de entrada distinto a los preestablecidos.5890]. e=T1-Y.epochs=300. Finalmente se comprueba que el desempeño ha sido alcanzado al evaluar el error (o su correspondiente MSE). Una vez finalizado el entrenamiento se evalúa el error comparando los “targets” y las salidas obtenidas. net. Además se asignarán valores iniciales aleatorios a los pesos y a los bias.1}=Wo.epochs=300.trainParam. net.T2. net2.2248 -0.T2). tho=randn(1.trainParam.P. sin embargo.goal=0.T1).iw{1. net. Y=hardlims(sim(net.LR).

j)'. Para ello se debe considerar un factor de corrección lr igual a 0. E2(i. es decir. Se considerará un de corrección de . b) Programa sin TRN: Antes de realizar las operaciones correspondientes se toma en cuenta el modelo de vector aumentado. %resultado red1 Yi2=round(sim(net2. e2=T2(j)-a2. dW=lr*e*P_ad(:. Ahora se procede a mejorar el desempeño de las redes.%resultado red2 El resultado obtenido es “1” para la primera red y “-1” para la segunda. Para ello se aumenta una fila más de elementos “-1” al vector de entrada P. resultado que según la tabla presentada anteriormente corresponde a la clase C. dW2=lr*e2*P_ad(:. ya que ésta sólo se indica para mantener similitud estructural respecto a una neurona real.j)=e. de modo que se hará uso de un algoritmo adaptivo.j)).j)).01. considerando el Threshold como un peso más. Finalmente se obtiene el vector de pesos final luego de 1000 iteraciones y se comprueba que el error mse es igual a cero: . a2=purelin(w_ad2*P_ad(:. f2(i)=0.Xi)). E(i. %Algoritmo adaptivo w_ad=w_ad+dW.Xi)). El código de dicho algoritmo para ambas redes sería el siguiente: for i=1:max_ep f(i)=0. e=T1(j)-a. for j=1:Q %Q:nro de patrones a=purelin(w_ad*P_ad(:.j)'. %Algoritmo adaptivo w_ad2=w_ad2+dW2.j)=e2. Luego se asignan valores iniciales aleatorios tanto a los pesos como a los umbrales (ya que son dos redes). end end Nótese que se usa una función de activación “purelin” que puede ser opcional.Xi=[1 -1 -1 -1]. Yi1=round(sim(net.

Yi1=round(purelin(w_ad*Xi+Th_d)). En este caso el resultado de evalúa manualmente multiplicando el vector de pesos finales (habiendo previamente separado el Threshold de los pesos) por el vector de entrada y aumentando el respecto threshold. En el caso de la segunda red el principio será el mismo.Respuesta ante entrada Intrusa: Se considerará la misma entrada intrusa que en el caso anterior: Xi=[1 -1 -1 -1]. . pero si un valor de entrada es igual a “1” se mostrará de color verde si la salida correspondiente (T2) a ese vector de entrada es igual a “-1”. lo que significa que se clasifica a la entrada intrusa dentro de la clase C. la matriz de entrada mostrada en la tabla de la Tabla 1 puede representarse gráficamente de modo que para un valor de entrada “-1” se muestre un pixel de color blanco y para un valor de entrada “1” se muestre un pixel de color rojo si la salida (T1) de dicho vector de entrada es igual a “-1” o un color cyan si dicha salida es igual a “1”. Gráfica de clases: Para el caso de la primera red. o de color magenta si dicha salida es igual a “1”. Al igual que en el caso anterior. el algoritmo obtiene una respuesta de “1” para Yi1 y “-1” para Yi2. Yi2=round(purelin(w_ad2*Xi+Th_d2)).

Nótese que la combinación de ambas representaciones deriva en una tabla con 4 salidas bien diferenciadas. También puede explicarse dicha combinación mediante el siguiente gráfico: .