Está en la página 1de 24

Departamento de Eléctrica y Electrónica

Ingeniería en Electrónica, Automatización y Control


Análisis Neuronal 2 Entradas
Nombre: Omar Reyes, Gustavo Ruiz
NRC: 2823
Fecha: 2018-10-23
1. Obtener las gráficas de características de una neurona con 2 entradas:
a) Función Sigmoide
Ítem 1 Variación de w1, mantiene constante w0 y w2
 Caso 1 w0=0; w1=1; w2=-1

REDES NEURONALES - ANÁLISIS DE UNA NEURONA CON DOS ENTRADAS.


%ITEM 1 - CASO 1
clc
clear all
int1=[-10:0.5:10];
int2=[-10:0.5:10];
[x,y]=meshgrid(int1,int2);

Funcion sigmoide.
w0=0; w1=1; w2=-1;
net=w0+w1.*x+w2.*y;
out=1./(1+exp(-net));
figure(1)
mesh(x,y,out)
title('FUNCIÓN SIGMOIDE - w0=0 - w1=1 - w2=-1')
ylabel('INT2')
zlabel('OUT')
xlabel('INT1')
grid on
 Caso 2 w0=0; w1=-1; w2=-1

%ITEM 1 - CASO 2
clc
clear all
int1=[-10:0.5:10];
int2=[-10:0.5:10];
[x,y]=meshgrid(int1,int2);

Funcion sigmoide.
w0=0; w1=-1; w2=-1;
net=w0+w1.*x+w2.*y;
out=1./(1+exp(-net));
figure(1)
mesh(x,y,out)
title('FUNCIÓN SIGMOIDE - w0=0 - w1=-1 - w2=-1')
ylabel('INT2')
zlabel('OUT')
xlabel('INT1')
grid on
 Caso 3 w0=0; w1=2; w2=-1

%ITEM 1 - CASO 3
clc
clear all
int1=[-10:0.5:10];
int2=[-10:0.5:10];
[x,y]=meshgrid(int1,int2);

Funcion sigmoide.
w0=0; w1=2; w2=-1;
net=w0+w1.*x+w2.*y;
out=1./(1+exp(-net));
figure(1)
mesh(x,y,out)
title('FUNCIÓN SIGMOIDE - w0=0 - w1=2 - w2=-1')
ylabel('INT2')
zlabel('OUT')
xlabel('INT1')
grid on
Ítem 2 Variación de w0, mantiene constante w1 y w2
 Caso 1 w0=-1; w1=1; w2=1

REDES NEURONALES - ANÁLISIS DE UNA NEURONA CON DOS ENTRADAS.


%ITEM 2 - CASO 1
clc
clear all
int1=[-10:0.5:10];
int2=[-10:0.5:10];
[x,y]=meshgrid(int1,int2);

Funcion sigmoide.
w0=-1; w1=1; w2=1;
net=w0+w1.*x+w2.*y;
out=1./(1+exp(-net));
figure(1)
mesh(x,y,out)
title('FUNCIÓN SIGMOIDE - w0=-1 - w1=1 - w2=1')
ylabel('INT2')
zlabel('OUT')
xlabel('INT1')
grid on
 Caso 2 w0=1; w1=1; w2=1

%ITEM 2 - CASO 2
clc
clear all
int1=[-10:0.5:10];
int2=[-10:0.5:10];
[x,y]=meshgrid(int1,int2);

Funcion sigmoide.
w0=1; w1=1; w2=1;
net=w0+w1.*x+w2.*y;
out=1./(1+exp(-net));
figure(1)
mesh(x,y,out)
title('FUNCIÓN SIGMOIDE - w0=1 - w1=1 - w2=1')
ylabel('INT2')
zlabel('OUT')
xlabel('INT1')
grid on
 Caso 3 w0=2; w1=1; w2=1

%ITEM 2 - CASO 3
clc
clear all
int1=[-10:0.5:10];
int2=[-10:0.5:10];
[x,y]=meshgrid(int1,int2);

Funcion sigmoide.
w0=2; w1=1; w2=1;
net=w0+w1.*x+w2.*y;
out=1./(1+exp(-net));
figure(1)
mesh(x,y,out)
title('FUNCIÓN SIGMOIDE - w0=2 - w1=1 - w2=1')
ylabel('INT2')
zlabel('OUT')
xlabel('INT1')
grid on
Ítem 3 Variación de w2, mantiene constante w0 y w1
 Caso 1 w0=1; w1=1; w2=-1

REDES NEURONALES - ANÁLISIS DE UNA NEURONA CON DOS ENTRADAS.


%ITEM 3 - CASO 1
clc
clear all
int1=[-10:0.5:10];
int2=[-10:0.5:10];
[x,y]=meshgrid(int1,int2);

Funcion sigmoide.
w0=1; w1=1; w2=-1;
net=w0+w1.*x+w2.*y;
out=1./(1+exp(-net));
figure(1)
mesh(x,y,out)
title('FUNCIÓN SIGMOIDE - w0=1 - w1=1 - w2=-1')
ylabel('INT2')
zlabel('OUT')
xlabel('INT1')
grid on
 Caso 2 w0=1; w1=1; w2=0

REDES NEURONALES - ANÁLISIS DE UNA NEURONA CON DOS ENTRADAS.


%ITEM 2 - CASO 2
clc
clear all
int1=[-10:0.5:10];
int2=[-10:0.5:10];
[x,y]=meshgrid(int1,int2);

Funcion sigmoide.
w0=1; w1=1; w2=0;
net=w0+w1.*x+w2.*y;
out=1./(1+exp(-net));
figure(1)
mesh(x,y,out)
title('FUNCIÓN SIGMOIDE - w0=1 - w1=1 - w2=0')
ylabel('INT2')
zlabel('OUT')
xlabel('INT1')
grid on
 Caso 3 w0=1; w1=1; w2=3

REDES NEURONALES - ANÁLISIS DE UNA NEURONA CON DOS ENTRADAS.


%ITEM 3 - CASO 3
clc
clear all
int1=[-10:0.5:10];
int2=[-10:0.5:10];
[x,y]=meshgrid(int1,int2);

Funcion sigmoide.
w0=1; w1=1; w2=3;
net=w0+w1.*x+w2.*y;
out=1./(1+exp(-net));
figure(1)
mesh(x,y,out)
title('FUNCIÓN SIGMOIDE - w0=1 - w1=1 - w2=3')
ylabel('INT2')
zlabel('OUT')
xlabel('INT1')
grid on
b) Función RELU
Ítem 1 Variación de w1, mantiene constante w0 y w2
 Caso 1 w0=0; w1=1; w2=-1

%ITEM 1 - CASO 1
out_relu=(net>0).*net;
figure(2)
mesh(x,y,out_relu)
title('FUNCIÓN RELU - w0=0 - w1=1 w2=-1')
ylabel('OUT')
xlabel('INT')
grid on
 Caso 2 w0=0; w1=-1; w2=-1

FUNCIÓN RELU
%ITEM 1 - CASO 2
out_relu=(net>0).*net;
figure(2)
mesh(x,y,out_relu)
title('FUNCIÓN RELU - w0=0 - w1=-1 w2=-1')
ylabel('OUT')
xlabel('INT')
grid on
Caso 3 w0=0; w1=2; w2=-1

FUNCIÓN RELU
%ITEM 1 - CASO 3
out_relu=(net>0).*net;
figure(2)
mesh(x,y,out_relu)
title('FUNCIÓN RELU - w0=0 - w1=2 w2=-1')
ylabel('OUT')
xlabel('INT')
grid on
Ítem 2 Variación de w0, mantiene constante w1 y w2
 Caso 1 w0=-1; w1=1; w2=1

FUNCIÓN RELU
%ITEM 2 - CASO 1
out_relu=(net>0).*net;
figure(2)
mesh(x,y,out_relu)
title('FUNCIÓN RELU - w0=-1 - w1=1 w2=1')
ylabel('OUT')
xlabel('INT')
grid on
 Caso 2 w0=1; w1=1; w2=1

FUNCIÓN RELU
%ITEM 2 - CASO 2
out_relu=(net>0).*net;
figure(2)
mesh(x,y,out_relu)
title('FUNCIÓN RELU - w0=1 - w1=1 w2=1')
ylabel('OUT')
xlabel('INT')
grid on
 Caso 3 w0=2; w1=1; w2=1

FUNCIÓN RELU
%ITEM 2 - CASO 3
out_relu=(net>0).*net;
figure(2)
mesh(x,y,out_relu)
title('FUNCIÓN RELU - w0=2 - w1=1 w2=1')
ylabel('OUT')
xlabel('INT')
grid on
Ítem 3 Variación de w2, mantiene constante w0 y w1
 Caso 1 w0=1; w1=1; w2=-1

FUNCIÓN RELU
%ITEM 3 - CASO 1
out_relu=(net>0).*net;
figure(2)
mesh(x,y,out_relu)
title('FUNCIÓN RELU - w0=1 - w1=1 w2=-1')
ylabel('OUT')
xlabel('INT')
grid on
 Caso 2 w0=1; w1=1; w2=0

FUNCIÓN RELU
%ITEM 3 - CASO 2
out_relu=(net>0).*net;
figure(2)
mesh(x,y,out_relu)
title('FUNCIÓN RELU - w0=1 - w1=1 w2=0')
ylabel('OUT')
xlabel('INT')
grid on
 Caso 3 w0=1; w1=1; w2=3

FUNCIÓN RELU
%ITEM 3 - CASO 3
out_relu=(net>0).*net;
figure(2)
mesh(x,y,out_relu)
title('FUNCIÓN RELU - w0=1 - w1=1 w2=3')
ylabel('OUT')
xlabel('INT')
grid on
Para el caso del ajuste de los pesos en cada caso variamos teniendo así que para:

 El ítem 1 varía w1, mantiene constante w0 y w2


 El ítem 2 varía w0, mantiene constante w1 y w2
 El ítem 3 varía w2, mantiene constante w0 y w1

En cada punto realizamos 3 variaciones para poder notar la diferencia de tal forma que se
puede observar que si w0 variaba mientras que se mantuvo invariante el valor de w1 y
como conclusión podemos decir que si modificamos el valor de w0 se va a modificar el
umbral al punto de frontera.

Mientras que para el caso del cambio de función de activación se pudo observar que:

El rango de la función sigmoide en el eje de las ordenadas (eje y) está entre [0 1].

El rango de la función RELU en el eje de las ordenadas (eje y) está entre [0 ∞].

Finalmente tenemos que la frontera de decisión no cambia con la función de activación.

2. Obtener la característica de cada neurona en ejercicio XOR y caracterizar


el funcionamiento global.
Analizar el efecto de cada neurona en funcionamiento global.
∑ ∫
in1
out1
∑ ∫ out
in2 ∑ ∫

out2

Para resolver necesitamos una red neuronal con 2 neuronas de entrada y una de
salida como se observa en el gráfico anterior. En este caso no es un problema
separable linealmente con una línea recta como era el caso de la función AND
estudiada en clase. Por lo tanto, necesitamos una capa oculta en la que
colocaremos 2 neuronas.

Gráfica para para out1

Gráfica para para out2


Gráfica para para out en f(out1, out2)

Gráfica para para out en f(in1, in2)


Analizando el efecto de cada neurona como funcionamiento global podemos
observar que el valor de cada neurona depende mucho del algoritmo de
aprendizaje utilizado de XOR, para la función de activación se usó la función
sigmoide de tal manera que para el caso del ajuste de los pesos en este punto se
observa claramente que el valor de w0 variaba mientras que se mantuvo invariante
el valor de w1 como conclusión podemos decir que si modificamos el valor de w0
se va a modificar el umbral al punto de frontera.
Además, tenemos que la frontera de decisión no cambia con la función de
activación. Para el siguiente punto tenemos la función RELU que se comprueba
dicha afirmación.

3. Realizar el algoritmo de aprendizaje de XOR con función de activación


RELU.

%%REDES NEURONALES.
%%XOR RELU
%%NOMBRES: OMAR REYES - GUSTAVO RUIZ
ALGORITMO DE APRENDIZAJE XOR
PASO 1 - PESOS ALEATORIOS.
clc
clear all
w9=1; w8=2; w7=2; w6=1; w5=3; w4=2; w3=1; w2=1; w1=3;

epoca=0; % NÚMERO DE ÉPOCAS


i=0; % NÚMERO DE EJEMPLOS
alpha=4; n=0.5;

VALORES DE LA COMPUERTA XOR


inputs=[0 0;0 1;1 0;1 1]; targ=[0;1;1;0];

INICIO DE ITERACIONES
for epoca=0:1:50

for i=1:1:4

%%Paso Dos
net2=inputs(i,1)*w2+inputs(i,2)*w4+w1;
net3=inputs(i,1)*w3+inputs(i,2)*w5+w6;
z1=(net2>0).*net2;
z2=(net3>0).*net3;
net=z1.*w7+z2.*w8+w9;
out=(net>0).*net;

Paso Tres
Var_W1=-n*(targ(i,1)-out)*(-1)*(alpha*out*(1-out)+0.1)*w7*alpha*z1*(1-z1)*(1);
Var_W2=-n*(targ(i,1)-out)*(-1)*(alpha*out*(1-out)+0.1)*w7*alpha*z1*(1-
z1)*inputs(i,1);
Var_W3=-n*(targ(i,1)-out)*(-1)*(alpha*out*(1-out)+0.1)*w8*alpha*z2*(1-
z2)*inputs(i,1);
Var_W4=-n*(targ(i,1)-out)*(-1)*(alpha*out*(1-out)+0.1)*w7*alpha*z1*(1-
z1)*inputs(i,2);
Var_W5=-n*(targ(i,1)-out)*(-1)*(alpha*out*(1-out)+0.1)*w8*alpha*z2*(1-
z2)*inputs(i,2);
Var_W6=-n*(targ(i,1)-out)*(-1)*(alpha*out*(1-out)+0.1)*w8*alpha*z2*(1-z2)*(1);
Var_W7=-n*(targ(i,1)-out)*(-1)*(alpha*out*(1-out)+0.1)*z1;
Var_W8=-n*(targ(i,1)-out)*(-1)*(alpha*out*(1-out)+0.1)*z2;
Var_W9=-n*(targ(i,1)-out)*(-1)*(alpha*out*(1-out)+0.1)*(1);

%%Paso Cuatro
w1=w1+Var_W1;
w2=w2+Var_W2;
w3=w3+Var_W3;
w4=w4+Var_W4;
w5=w5+Var_W5;
w6=w6+Var_W6;
w7=w7+Var_W7;
w8=w8+Var_W8;
w9=w9+Var_W9;
AUMENTO DE LOOP EJEMPLO
i=i+1;

end

AUMENTO DE LOOP ÉPOCA


epoca=epoca+1;

end

VALORES DE PESOS.
w1
w2
w3
w4
w5
w6
w7
w8
w9

También podría gustarte