Anda di halaman 1dari 14

INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE CÓMPUTO

Neural Networks

Practica 1: Celula McColloch-Pitts

Prof.: Moreno Armendáriz Marco Antonio

Grupo: 3CM1

Alumno:

Salcedo Barrón Ruben Osmair.

MEXICO, D.F. a 27 de agosto del 2018


2
Neural Networks

Introducción

El primer modelo matemático de una neurona artificial, creado con el fin de llevar a
cabo tareas simples, fue presentado en el año 1943 en un trabajo conjunto entre el
psiquiatra y neuro anatomista Warren McCulloch y el matemático Walter Pitts. Un
ejemplo de modelo neuronal con dos entradas x e y es representado en la figura 2.

• El mismo consta de:


• Las entradas x e y
• Los pesos sinápticos w1 y w2 correspondientes a cada entrada
• Un término aditivo b
• Una función de activación f
• Una salida z

Las entradas x e y son el estímulo que la neurona artificial recibe del entorno que
la rodea, y la salida z es la respuesta a tal estímulo. La neurona se adapta al
medio circundante y aprende de ´el modificando el valor de sus pesos sinápticos
w1 y w2 y su término aditivo b. Estos son conocidos como los parámetros libres
del modelo, pues los mismos pueden ser modificados y adaptados para realizar
una tarea determinada. En este modelo, la salida neuronal z está dada por

z = f (w1 x + w2 y + b)

La función de activación f es seleccionada de acuerdo a la tarea realizada por la


neurona.
3
Neural Networks

Diagrama Flujo
4
Neural Networks

Ejemplos
AND

>> celula

Celula McCuloch-Pitts

Escoja un valor AND=1, OR=2 Y NOT=3

Escoja tamanio entradas

and =

0 0 0

0 1 0

1 0 0

1 1 1

Ingrese un valor para el umbral

Ingrese un valor para W1

Ingrese un valor para W2

Aprendizaje correcto

Aprendizaje correcto

Aprendizaje correcto

Aprendizaje correcto

Compuerta simulada correctamente


5
Neural Networks

OR

>> celula

Celula McCuloch-Pitts

Escoja un valor AND=1, OR=2 Y NOT=3

Escoja tamanio entradas

or =

0 0 0

0 1 1

1 0 1

1 1 1

Ingrese un valor para el umbral

Ingrese un valor para W1

Ingrese un valor para W2

Aprendizaje correcto

Aprendizaje correcto

Aprendizaje correcto

Aprendizaje correcto

Compuerta simulada correctamente

NOT

>> celula

Celula McCuloch-Pitts
6
Neural Networks

Escoja un valor AND=1, OR=2 Y NOT=3

not =

1 0

0 1

Ingrese un valor para el umbral

-1

Ingrese un valor para W

-1

Aprendizaje correcto

Aprendizaje correcto

Compuerta simulada correctamente

Discusión resultados
Al momento de realizar las pruebas con diferentes casos, pude observar que el
umbral dependía del número de entradas menos 1 en la compuerta AND y en la
compuerta OR el umbral en la mayoría de casos tenía que ser 0 para que se
comporte correctamente y en la NOT pues muy fácil de visualizar los resultados.

Conclusiones
Debido a los ejemplos base de cada compuerta podemos determinar algunos
ejemplos con los cuales asegurar el correcto funcionamiento de las compuertas
establecidas. Tomando en cuenta estas situaciones y comprobando algunos casos
con pruebas de escritorio fue fácil implementar cada caso correctamente.

Referencias
1. W. S. McCulloch y W. Pitts, "A logical calculus of the ideas immanent in
neurons activity", Bull. En línea [PDF]:
http://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.p
df
2. Redes Neuronales Artificiales En línea [PDF]:
http://www.famaf.unc.edu.ar/~revm/digital24-3/redes.pdf
7
Neural Networks

Código:
disp('Celula McCuloch-Pitts') a=0;

aceptado=0; end

in = input('Escoja un valor AND=1,OR=2 Y if(a==and(i,3))


NOT=3 \n');
disp('Aprendizaje
switch in correcto')

case 1
aceptado=aceptado+1;
clc
else
tam = input('Escoja tamanio
entradas\n'); disp('Aprendizaje
incorrecto')
switch tam
aceptado=aceptado-
case 2
1;
and=[0 0 0;0 1 0;1 0 0;1 1 1]
end
omega=input('Ingrese un
end
valor para el umbral \n');
if(aceptado==4)
w1= input('Ingrese un valor
para W1\n'); disp('Compuerta simulada
correctamente');
w2= input('Ingrese un valor
para W2\n'); else

for i=1:4 disp('Compuerta erronea');

end
n=(and(i,1)*w1)+(and(i,2)*w2);
case 3
if(n>omega)
and=[0 0 0 0;0 0 1 0;0 1 0 0;0
a=1; 1 1 0;1 0 0 0;1 0 1 0;1 1 0 0;1 1 1 1]

else
8
Neural Networks

omega=input('Ingrese un end
valor para el umbral \n');
if(aceptado==8)
w1= input('Ingrese un valor
disp('Compuerta simulada
para W1\n');
correctamente');
w2= input('Ingrese un valor
else
para W2\n');
disp('Compuerta erronea');
w3= input('Ingrese un valor
para W3\n'); end
for i=1:8 case 4

and=[0 0 0 0 0;0 0 0 1 0;0 0 1


n=(and(i,1)*w1)+(and(i,2)*w2)+(and(i,3)* 0 0;0 0 1 1 0;0 1 0 0 0;0 1 0 1 0;0 1 1 0 0;0
w3); 1 1 1 0;1 0 0 0 0;1 0 0 1 0;1 0 1 0 0;1 0 1 1
0;1 1 0 0 0;1 1 0 1 0;1 1 1 0 0;1 1 1 1 1]
if(n>omega)
omega=input('Ingrese un
a=1;
valor para el umbral \n');
else
w1= input('Ingrese un valor
a=0; para W1\n');

end w2= input('Ingrese un valor


para W2\n');
if(a==and(i,4))
w3= input('Ingrese un valor
disp('Aprendizaje
para W3\n');
correcto')
w4= input('Ingrese un valor
para W4\n');
aceptado=aceptado+1;
for i=1:16
else

disp('Aprendizaje
n=(and(i,1)*w1)+(and(i,2)*w2)+(and(i,3)*
incorrecto')
w3)+(and(i,4)*w4);
aceptado=aceptado-
if(n>omega)
1;
a=1;
end
9
Neural Networks

else 0 1 0 1 0;1 0 1 1 0 0;1 0 1 1 1 0;1 1 0 0 0


0;1 1 0 0 1 0;1 1 0 1 0 0;1 1 0 1 1 0;1 1 1 0
a=0;
0 0;1 1 1 0 1 0;1 1 1 1 0 0;1 1 1 1 1 1]
end
omega=input('Ingrese un
if(a==and(i,5)) valor para el umbral \n');

disp('Aprendizaje w1= input('Ingrese un valor


correcto') para W1\n');

w2= input('Ingrese un valor


aceptado=aceptado+1; para W2\n');

else w3= input('Ingrese un valor


para W3\n');
disp('Aprendizaje
incorrecto') w4= input('Ingrese un valor
para W4\n');
aceptado=aceptado-
1; w5= input('Ingrese un valor
para W5\n');
end
for i=1:32
end

if(aceptado==16) n=(and(i,1)*w1)+(and(i,2)*w2)+(and(i,3)*
w3)+(and(i,4)*w4)+(and(i,5)*w5);
disp('Compuerta simulada
correctamente'); if(n>omega)
else a=1;
disp('Compuerta erronea'); else
end a=0;
case 5 end
and=[0 0 0 0 0 0;0 0 0 0 1 0;0 if(a==and(i,6))
0 0 1 0 0;0 0 0 1 1 0;0 0 1 0 0 0;0 0 1 0 1
0;0 0 1 1 0 0;0 0 1 1 1 0;0 1 0 0 0 0;0 1 0 0 disp('Aprendizaje
1 0;0 1 0 1 0 0;0 1 0 1 1 0;0 1 1 0 0 0;0 1 1 correcto')
0 1 0;0 1 1 1 0 0;0 1 1 1 1 0;1 0 0 0 0 0;1 0
0 0 1 0;1 0 0 1 0 0;1 0 0 1 1 0;1 0 1 0 0 0;1
aceptado=aceptado+1;
10
Neural Networks

else w2= input('Ingrese un valor


para W2\n');
disp('Aprendizaje
incorrecto') for i=1:4

aceptado=aceptado-
1; n=(and(i,1)*w1)+(and(i,2)*w2);

end if(n>omega)

end a=1;

if(aceptado==32) else

disp('Compuerta simulada a=0;


correctamente');
end
else
if(a==and(i,3))
disp('Compuerta erronea');
disp('Aprendizaje
end correcto')

otherwise
aceptado=aceptado+1;
end
else
case 2
disp('Aprendizaje
clc
incorrecto')
tam = input('Escoja tamanio
aceptado=aceptado-
entradas\n');
1;
switch tam
end
case 2
end
or=[0 0 0;0 1 1;1 0 1;1 1 1]
if(aceptado==4)
omega=input('Ingrese un
disp('Compuerta simulada
valor para el umbral \n');
correctamente');
w1= input('Ingrese un valor
else
para W1\n');
disp('Compuerta erronea');
11
Neural Networks

end disp('Aprendizaje
incorrecto')
case 3
aceptado=aceptado-
or=[0 0 0 0;0 0 1 1;0 1 0 1;0 1
1;
1 1;1 0 0 1;1 0 1 1;1 1 0 1;1 1 1 1]
end
omega=input('Ingrese un
valor para el umbral \n'); end

w1= input('Ingrese un valor if(aceptado==8)


para W1\n');
disp('Compuerta simulada
w2= input('Ingrese un valor correctamente');
para W2\n');
else
w3= input('Ingrese un valor
disp('Compuerta erronea');
para W3\n');
end
for i=1:8
case 4
n=(and(i,1)*w1)+(and(i,2)*w2)+(and(i,3)* and=[0 0 0 0 0;0 0 0 1 01;0 0 1
w3); 0 1;0 0 1 1 1;0 1 0 0 1;0 1 0 1 1;0 1 1 0 1;0
1 1 1 1;1 0 0 0 1;1 0 0 1 1;1 0 1 0 1;1 0 1 1
if(n>omega)
1;1 1 0 0 1;1 1 0 1 1;1 1 1 0 1;1 1 1 1 1]
a=1;
omega=input('Ingrese un
else valor para el umbral \n');

a=0; w1= input('Ingrese un valor


para W1\n');
end
w2= input('Ingrese un valor
if(a==and(i,4))
para W2\n');
disp('Aprendizaje
w3= input('Ingrese un valor
correcto')
para W3\n');

w4= input('Ingrese un valor


aceptado=aceptado+1;
para W4\n');
else
for i=1:16
12
Neural Networks

and=[0 0 0 0 0 0;0 0 0 0 1 1;0


n=(and(i,1)*w1)+(and(i,2)*w2)+(and(i,3)* 0 0 1 0 1;0 0 0 1 1 1;0 0 1 0 0 1;0 0 1 0 1
w3)+(and(i,4)*w4); 1;0 0 1 1 0 1;0 0 1 1 1 1;0 1 0 0 0 1;0 1 0 0
1 1;0 1 0 1 0 1;0 1 0 1 1 1;0 1 1 0 0 1;0 1 1
if(n>omega)
0 1 1;0 1 1 1 0 1;0 1 1 1 1 1;1 0 0 0 0 1;1 0
a=1; 0 0 1 1;1 0 0 1 0 1;1 0 0 1 1 1;1 0 1 0 0 1;1
0 1 0 1 1;1 0 1 1 0 1;1 0 1 1 1 1;1 1 0 0 0
else 1;1 1 0 0 1 1;1 1 0 1 0 1;1 1 0 1 1 1;1 1 1 0
0 1;1 1 1 0 1 1;1 1 1 1 0 1;1 1 1 1 1 1]
a=0;
omega=input('Ingrese un
end
valor para el umbral \n');
if(a==and(i,5))
w1= input('Ingrese un valor
disp('Aprendizaje para W1\n');
correcto')
w2= input('Ingrese un valor
para W2\n');
aceptado=aceptado+1;
w3= input('Ingrese un valor
else para W3\n');

disp('Aprendizaje w4= input('Ingrese un valor


incorrecto') para W4\n');

aceptado=aceptado- w5= input('Ingrese un valor


1; para W5\n');

end for i=1:32

end
n=(and(i,1)*w1)+(and(i,2)*w2)+(and(i,3)*
if(aceptado==16)
w3)+(and(i,4)*w4)+(and(i,5)*w5);
disp('Compuerta simulada
if(n>omega)
correctamente');
a=1;
else
else
disp('Compuerta erronea');
a=0;
end
end
case 5
13
Neural Networks

if(a==and(i,6)) for i=1:2

disp('Aprendizaje n=not(i,1)*w;
correcto')
if(n>omega)

a=1;
aceptado=aceptado+1;
else
else
a=0;
disp('Aprendizaje
incorrecto') end
aceptado=aceptado- if(a==not(i,2))
1;
disp('Aprendizaje correcto')
end
aceptado=aceptado+1;
end
else
if(aceptado==32)
disp('Aprendizaje incorrecto')
disp('Compuerta simulada
correctamente'); aceptado=aceptado-1;

else end

disp('Compuerta erronea'); end

end if(aceptado==2)

otherwise disp('Compuerta simulada


correctamente');
end
else
case 3
disp('Compuerta erronea');
clc
end
not=[1 0;0 1]
otherwise
omega=input('Ingrese un valor para
el umbral\n'); disp('Escoga un valor correcto')

w= input('Ingrese un valor para end


W\n');

Anda mungkin juga menyukai