Está en la página 1de 2

DASS - UCSE - INGENIERÍA INFORMÁTICA

Cátedra de INTELIGENCIA ARTIFICIAL


PROBLEMAS RESUELTOS - Redes neuronales

Codificación de entrenamiento y operación de un perceptrón de 2 entradas y salida escalón, para


ejecutar la función lógica OR.

a w1
F
b w2

Script de entrenamiento/ejecución
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––-
%PERCEPTRÓN DE 2 ENTRADAS SIN BIAS
%Script para ejecución de la función OR
clc;
%Matriz de entrada/salida [a b F]
Fab = [0 0 0; 0 1 1; 1 0 1; 1 1 1];

%Parámetros ---------------------------------
etha = 0.5; %factor de aprendizaje

W = -1 + 2*rand(2,1); %pesos iniciales aleatorios en [-1 , +1]


W_inic = W;

DW1 = 1; DW2 = 1; %Delta de pesos iniciales

n = 0; %contador de iteraciones
% -------------------------------------------------

while (DW1 ~= 0) && (DW2 ~= 0)


%esta secuencia se ejecuta hasta que la variación de pesos sea nula
n = n+1
for i = 1:4
F_sal = heaviside(Fab(i,1:2)*W); %heaviside -> función escalón
err_salida(i) = (Fab(i,3)-F_sal);
Dw1(i) = etha*Fab(i,1)*err_salida(i); %actualización de peso w1
Dw2(i) = etha*Fab(i,2)*err_salida(i); %actualización de peso w2
end
DW1 = sum(Dw1); DW2 = sum(Dw2); %suma de actualizaciones para todos los patrones
W(1) = W(1) + DW1; W(2) = W(2) + DW2; %actualización para iteración n
ECmed(n) = sum(err_salida^2)/4; %cálculo del error cuadrático medio
end

%Presentación de resultados
sprintf(' Peso w1_inic = %g w1_fin = %g\n',W_inic(1),W(1));

sprintf(' Peso w2_inic = %g w2_fin = %g\n',W_inic(2),W(2));

sprintf(' Error final = %g iterac = %i\n\n',ECmed(n),n);


sprintf(' a b OR(a,b)\n');
[Fab(1:4,1) Fab(1:4,2) heaviside (Fab(1:4,1:2)*W)]
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––-
Ejecución
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––-
>> Perceptron_OR.m [enter]

n =

1.
n =

2.
Peso w1_inic = 0.632022 w1_fin = 1.13202
Peso w2_inic = -0.886214 w2_fin = 0.113786
Error final = 0 iterac = 2

a b OR(a,b)
ans =

0. 0. 0.
0. 1. 1.
1. 0. 1.
1. 1. 1.
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––-

Por ser una red simple, con datos de entrenamiento binarios, rápidamente ha alcanzado el objetivo (dos
iteraciones) con error cero.
Si bien este desarrollo se ha configurado como un script, se puede configurar como un par de funciones,
una para entrenamiento y otra para ejecución.



IA 2017 - PR - # 2

También podría gustarte