Sei sulla pagina 1di 4

See

discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/309377517

Implementacin de la Funcin XOR con un


Perceptrn en Arduino

Working Paper October 2016


DOI: 10.13140/RG.2.2.19626.41926

CITATIONS READS

0 783

1 author:

Isra Cero
Universidad Politcnica de Puebla
27 PUBLICATIONS 0 CITATIONS

SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Implementacin de la Funcin XOR con un Perceptrn en Arduino View project

Fractional Control in Microcontrollers View project

All content following this page was uploaded by Isra Cero on 23 October 2016.

The user has requested enhancement of the downloaded file.


Implementacin de la Funcin XOR con un Perceptrn
en Arduino.
Israel.Cern-Morales1
1
Maestra en Ingeniera en Automatizacin de Procesos Industriales
Universidad Politcnica de Puebla
3er. Carril del ejido serrano s/n, San Mateo Cuanal, Puebla, Mxico. C.P. 72640
Israel.ceron@uppuebla.edu.mx

Resumen- Este documento presenta un ejemplo que permite


implementar un Perceptron, este desarrollo se presenta muy
pocas veces en la literatura relacionada con la inteligencia
artificial, por lo que con el fin de ayudar a los estudiantes en el
entendimiento de este tema se realiza este documento. Los
resultados muestran la implementacin de un Perceptron con el
cual se realiza la funcin lgica XOR.

Palabras Clave- Algoritmo, Arduino, Entrenamiento,


Perceptron.
Figura. 1. Diagrama de un Perceptron con dos entradas y un valor
de predisposicin B.
INTRODUCCIN
La funcin limitador fuerte (Hardlim) se define en la
ecuacin Ec.1.
El Perceptrn es una de las arquitecturas ms bsicas en el
+ 0
= 1
desarrollo de la inteligencia artificial y el entrenamiento de
Ec.1
+ < 0
este tipo de neuronas artificiales suele ser poco detallado en la
mayora de los textos que bordan este tpico, muchas veces el 0
entrenamiento de los perceptrones suele ser realizado con
En donde:
programas de computo, sin embargo existe inters por
estudiantes que desean saber cul es el paso a paso en el
entrenamiento de un Perceptron. Por lo cual se da un ejemplo
en este documento. = 0
1 Ec.2
ANTECEDENTES
0
= Ec.3
Trabajar con inteligencia artificial hoy da es muy comn 1
por parte de estudiantes universitarios y muchas veces el
La ecuacin Ec.2 se llama la matriz de pesos sinpticos,
entrenamiento de redes neuronales se vuelve difcil de
en este ejemplo es una matriz de 1 fila y 2 columnas, y la
asimilar debido a que no siempre se tiene practica en el
ecuacin Ec.3 si es un vector vertical de 2 filas. De manera
entrenamiento de redes neuronales paso a paso y esto es
que el producto de la matriz W y el vector P tiene como
debido a la gran cantidad de aritmtica empleada, por lo que
resultado un escalar. Adems el valor de predisposicin o
+
en este documento se desarrolla un ejemplo bsico de
entrenamiento lo que permite a los estudiantes interesados BIAS (B) es un escalar, de manera que el trmino
tener un punto de referencia de que es lo que realmente hacen es un escalar. Sobre este escalar se aplica la definicin de
los programas de computo al momento de entrenar redes Ec.1.
neuronales artificiales tipo Perceptrn.
Se procede con el algoritmo de entrenamiento mediante el
y con los cuales la
cual se encuentran los valores de
red neuronal cumple con la funcin deseada.
DESARROLLO
P0 P1 AND OR XOR
Consideremos un Perceptrn con dos entradas y dos
pesos sinpticos, adems de un valor de predisposicin
0 0 0 0 0
llamado BIAS (B) como lo muestra la Figura 1. 0 1 0 1 1
1 0 0 1 1
1 1 1 1 0
Tabla. 1. Tabla que muestra las entradas Po y P1 y las funciones
lgicas a ser utilizadas para programar un Perceptron XOR.
Figura. 2. Diagrama de un Perceptron con tres neuronas que desempean la funcin XOR.

La Tabla 1 muestra las entradas P0 y P1 que sern


procesadas por el Perceptron, para obtener la funcin XOR float analogPin0 = 0; float analogPin1 = 1; int axon = 13;
(OR Exclusiva) es necesario hacer uso de dos funciones de
apoyo, debido a que la funcin XOR no se puede float p0; float p1; int k =0;
implementar con una nica neurona de tipo Perceptron. Es int wa0 = 2; int wa1 = 1; int ba = -3;
int wo0 = 1; int wo1 = 1; int bo = -1;
necesario utilizar dos neuronas una que desempee la int wxa = -3; int wxo = 1; int bx = -1;
funcin AND y otra la funcin OR y con estas saludad int fand; int ffor; int a;
entrenar una tercera neurona para finalmente llegar al
objetivo de tener una neurona Perceptron. XOR. void setup() {
pinMode(11,OUTPUT);
pinMode(axon, OUTPUT);
Despus de realizar el entrenamiento de las neuronas se Serial.begin(9600); }
tienen los valores de los pesos sinpticos y los valores de las
predisposiciones para cada neurona. Con los valores void loop() {
while(k<=200) {
calculados se desarrolla el cdigo de programacin que se for(k=0; k<=200; k++) {
observa en el Cuadro 1. p0=(analogRead(0))/384; p1=(analogRead(1))/384;

En la Figura 3 Se observa la fotografa de la if( wa0*p0+wa1*p1+ba < 0)


fand =0;
implementacin del Perceptron en una tarjeta de desarrollo else if ( wa0*p0+wa1*p1+ba >= 0)
Arduino Uno. fand =1;

if( wo0*p0+wo1*p1+bo <0)


ffor=0;
else if ( wo0*p0+wo1*p1+bo >= 0)
ffor =1;

if(wxa*fand+wxo*ffor+bx < 0){


a=0; digitalWrite(axon, LOW);}
else if(wxa*fand+wxo*ffor+bx >= 0){
a=1; digitalWrite(axon, HIGH);}

Serial.print(p0,2); Serial.print("\t");
Serial.print(p1,2); Serial.print("\t");
Serial.print(a,2); Serial.print("\t");
Serial.println(); delay(100); } } }

Figura. 3. Implementacin en Arduino del Perceptron que realiza Cuadro. 1. Cdigo en Arduino del Perceptron que realiza la
la funcin XOR. funcin XOR.
Finalmente en la Figura 4 vemos la salida del monitor REFERENCIAS
Serial de Arduino en el cual se observa el comportamiento
[1] Howard Demuth, Mark Beale, Neural Network Toolbox or Use
XOR programado con este Perceptron. with MATLAB, User Guide, Version 4, The MathWorks, Inc. 2002.

Figura. 4. Salida del monitor Serial de Arduino que muestra el


desempeo del Perceptron realizando la Funcin XOR.

RESULTADOS

Se obtuvo la funcin XOR mediante el entrenamiento de


un Perceptron de tres neuronas, y la implementacin fue
posible en Arduino sin requerir demasiados accesorios, solo
fueron necesarias unas resistencias y un Diodo LED para
visualizar la salida, la cual est entre cero y uno lgico.

CONCLUSIONES

1.- Implementar un Perceptron en Arduino que


desempee la funcin Lgica XOR es posible solo hay que
ser cuidadosos en el desarrollo del entrenamiento de las
neuronas que componen el Perceptron, Adems se muestra el
comportamiento de la funcin XOR en el monitor serial, las
entradas P0 y P1 se muestran con puntos decimales porque
son entradas analgicas, la salida es en formato digital.

2.- Este Perceptron puede ser utilizado con mayores


ventajas que las que ofrece la compuesta lgica XOR debido
a que las entradas son analgicas y no tiene una zona de
trabajo indeterminada como ocurre con las compuertas de la
familia TTL y CMOS.

View publication stats

Potrebbero piacerti anche