Introducción a las Redes Neuronales Pt. II

Implementación de un perceptrón en Python

Ulises García
Future Lab
4 min readFeb 9, 2020

--

Antes de comenzar es necesario tener conocimiento básicos en python (3.6) y la librería numpy.

Introducción

En el post anterior de “Introducción a las Redes Neuronales Pt. 1" se explicaron los conceptos básicos que conforman al mundo de las redes neuronales, donde partimos del modelo de un perceptrón que es la parte fundamental una red neuronal.

Para este segundo post haremos la implementación del perceptrón en el lenguaje de programación Python en su versión 3.6.8 utilizando el paradigma de programación orientado a objetos.

Primero retomamos el modelo del perceptrón y el ejemplo de la compuerta lógica AND, donde obtenemos verdadero (1) si los dos casos de entrada son verdaderos (1) en caso contrario se obtiene falso (0).

Modelo de un perceptron

Estructura básica del modelo del perceptrón
  1. Señales de entrada: Estos pueden ser valores booleanos, reales o valores enteros + un valor b el caul es llamado bias.
  2. Pesos sinápticos: Se generan pesos aleatorios en el rango [-1,1] para dos entradas dadas.
  3. Unión Sumatoria: Se realiza la suma ponderada de entradas con pesos + bias.
  4. Función de activación: Indica si una salida se dispara hacia arriba o hacia abajo de acuerdo a con la función de activación elegida.
  5. Salida: Se realiza la comparación de la salida del perceptrón con la salida deseada.

Compuerta lógica AND

Tabla de verdad de la compuerta lógica AND

Comencemos a programar!

La programación del perceptrón se realizará siguiendo los procesos del modelo presentado.

Estructura del proyecto python

Estructura del proyecto python

Paso 1: Definición de las entradas (de la compuerta AND)

Las entradas del perceptrón es una matriz de entradas más el valor bias (archivo main.py).

(main.py) Definición de las entradas

Definición de las salidas (de la compuerta AND)

Salidas esperadas

Creación de la clase Perceptrón

Lo primero es importar el modulo de numpy para poder convertir nuestra matriz de entrada en un arreglo de numpy y poder trabajarlo de manera más fácil. Enseguida creamos la clase Perceptron el cual recibirá la matriz de entrada y el arreglo de salidas las cuales serán convertidas a arreglos numpy al instanciar la clase Perceptron.

(perceptron.py) Clase Perceptrón

Ahora crearemos un método nombrado Fit (se refiere al entrenamiento del perceptrón). Primero definimos dos variables: épocas y num_inputs, el número de épocas indica el tiempo en épocas que se tardo el perceptrón en aprender las entradas encontrando los mejores pesos, y para el caso de num_inputs es una variable de control que sirve para detener el ciclo while, esta condición se cumple cuando el numero de salidas esperadas sea igual al número de salidas obtenidas.

Creación del método Fit

Paso 2: Generación de pesos aleatorios en el rango [-1,1].

Arreglo de pesos para cada vector de entrada

Paso 3: Unión sumatoria o suma ponderada de las entradas por los pesos.

Recorremos la matriz de entradas, la matriz de pesos y el vector de salidas. La función zip nos permite recorrer multiples estructuras en una sola corrida.

Suma ponderada de pesos por entradas

Para realiza la suma ponderada utilizamos el operador @ que nos permite realizar la sumatoria de las entradas por los pesos.

Resultado de la suma ponderada (pesos con entradas)

Paso 4: Función de activación

La función de activación más utilizada es la función sigmoide. El funcionamiento es que si el resultado de la suma ponderada es menor a 0 la salida resultante es 0 y si el resultado de la suma ponderada es mayor a 0 entonces la salida resultante es 1.

Función de activación

Paso 5 Salida: Comparación de salidas obtenidas con salidas esperadas

Evaluación de la salida actual con la salida esperada
Comparación de la salidas actuales con las salidas esperadas

Ejecución

En esta ejecución el perceptrón se tardo 5 épocas en aprender las entradas y encontrar los mejores pesos. Esto puede varia en cada ejecución.

Ejecución del perceptrón

Link del repositorio: https://github.com/ugarciac/PerceptronPython

Dudas, Comentarios, Críticas constructivas
Twitter: @ugarciacal
Facebook: Ulises GC

--

--

Ulises García
Future Lab

CM Future Lab 🚀| Software Engineer 👨‍💻| master’s student in computer science🕹| PythonDev 🐍| interests in PatterRecognition and MachineLearning 🧩