web-enzyme-v2-logo-white
logo-enzyme-2-blog

Programar inteligencia artificial: cómo hacerlo con python en 4 pasos

programar-inteligencia-artificial

Herramientas como los asistentes virtuales, los chatbots para marketing, las de analítica predictiva, entre muchas otras, han popularizado el tema de la inteligencia artificial (IA). De hecho, España se ubica como el 6to país con más patentes de IA en el mundo (más de 42 mil patentes). De aquí la necesidad de aprender a programar inteligencia artificial para crear soluciones cada vez más potentes.

En este artículo nos centraremos en las Redes Neuronales Artificiales (RNA). Una guía paso a paso para la programación de inteligencia artificial con python para crear RNAs.

cta text cognitive computing

Entendiendo qué es una red neuronal artificial para programar inteligencia artificial

Para programar inteligencia artificial es necesario, primero, entender qué es una red neuronal artificial.

Una red neuronal o red conexionista es un conjunto de nodos (neuronas) conectadas entre sí, formando una estructura de capas de profundidad, también llamadas “capas de aprendizaje”. Esto último se debe a que dichas capas son las que permiten que la inteligencia artificial pueda ‘aprender’.

Entonces, a través de estas capas, la red procesa unos datos numéricos de entrada (inputs) para dar un resultado (output). El output puede ser un número o un array de los mismos.

El resultado siempre viene acompañado de otro valor numérico entre 0 y 1, llamado loss (pérdida). Este representa la precisión con la que la red ha obtenido un resultado.

La siguiente cuestión para programar inteligencia artificial es conocer la estructura de las capas al detalle, la anatomía de las neuronas artificiales y los pasos para entrenar las RNA.

Conoce el caso de éxito de nuestro chatbot con inteligencia artificial para e-commerce que resuelve hasta el 80% de las consultas.

Capas de las redes neuronales artificiales para la programación de inteligencia artificial

Al programar inteligencia artificial se debe tener en cuenta que existen tres tipos de capas en una RNA:

programar inteligencia artificial redes neuronales

  1. Capa de entrada (input layer): Es la primera capa de la red, así que debe tener la misma cantidad de neuronas que datos tenga el input. Por ejemplo, si queremos que nuestro input sea una imagen de 4096 píxeles, nuestra primera capa tendrá 4096 neuronas. 
  2. Capas ocultas (hidden layers): es el conjunto de capas intermedias entre la entrada y la salida. Pueden contener todas las neuronas que hagan falta, pues la cantidad de capas y neuronas estará relacionada con la complejidad de la red y la capacidad de procesamiento de datos más complejos.
  3. Capa de salida (output layer): es la última capa de la red. De esta capa se recoge el resultado del procesamiento de la RNA.

Anatomía de una neurona en la programación de inteligencia artificial

Toda neurona artificial o nodo tiene un peso (weight), un bias y una función de activación. En este artículo usaremos la ‘Sigmoid activation function’.

Si a una neurona le entra un input ‘x’ y esta envía un output ‘y’, la forma de calcularlo será:

y=σ(wx+b), donde w=peso; b=bias

Entonces, para todas las neuronas de una capa podemos definir un vector W1, el cual representará todos los pesos de todas las neuronas de la primera capa, W2 de la segunda y así sucesivamente. Lo mismo ocurre con las bias, que llamaremos B1, B2, etc.

Por lo tanto, para la red neuronal mostrada anteriormente, tenemos:

Y=σ(W2σ(W1x+B1)+B2)

Donde Y, Wx, Bx, x son matrices.

Al programar inteligencia artificial debemos entender que el objetivo de toda RNA es ajustar tanto los pesos como los bias, esto con el fin de dar los resultados más precisos posibles. Para ello debemos entrenar la red, lo cual explicamos a continuación.

Pasos para entrenar redes neuronales artificiales al programar inteligencia artificial

Para entrenar las RNA al momento de programar inteligencia artificial se deben seguir dos pasos:

  • Feedforwarding

Se trata, simplemente, de introducir un input a la red y calcular el output de esta. Llegados a este punto, probablemente te estés preguntando cómo sabe la red el resultado que debería dar, y para ello utilizaremos lo que se llama la loss function.

Para este ejemplo, usaremos la suma de los errores al cuadrado:

programar inteligencia artificial feedforwarding

Durante el entrenamiento, tendremos que indicarle a la red qué output es el esperado para cada input. Luego, para saber cómo de acertado ha sido, aplicaremos a cada output la Loss function, que nos dará un valor numérico, el cual deberá conseguir minimizar.

  • Backpropagation

Luego de medir el error de nuestra predicción (loss), necesitamos encontrar una manera de propagar el error y actualizar los pesos y bias. Para determinar la cantidad indicada de ambos parámetros, debemos conocer la derivada de la loss function con respecto a los pesos y bias.

Si tenemos la derivada, simplemente podemos actualizar los pesos y los bias aumentándolos o reduciéndolos. Esto se conoce como descenso del gradiente. Sin embargo, no podemos calcular directamente la derivada de la loss function con respecto a los pesos y bias porque la ecuación de esta función no contiene dichos parámetros. Por lo tanto, necesitamos implementar la ‘regla de la cadena’:

programar inteligencia artificial backpropagation

¿Cómo programar inteligencia artificial con python en 4 pasos?

Ahora, con las bases anteriores ya sentadas, pasemos a programar inteligencia artificial y a construir nuestra primera RNA con python. Puedes conocer las ventajas de este potente lenguaje de programación en nuestro artículo Redes neuronales con Python: ¿por qué es el mejor lenguaje para IA? 

Entonces, requisitos para comenzar a programar inteligencia artificial: Python y NumPy.

PASO 1: definir la clase correspondiente a nuestra red neuronal artificial.

programar inteligencia artificial paso 1

PASO 2: definir la función de ‘feedforward’ mencionada anteriormente:

programar inteligencia artificial paso 2

En esta función también debemos definir dos parámetros: ’msg’ y ‘step’. Estos sirven para decidir si queremos ver un mensaje del error actual de la red neuronal durante el entrenamiento. Por defecto no se muestra este mensaje y en caso de activarlo se mostraría cada 100 rondas.

PASO 3: definir la función de ‘backpropagation’.

programar inteligencia artificial paso 3

PASO 4: podemos añadir una función que realiza un feedforward del input que le pasemos como parámetro, mostrando un mensaje por pantalla con la predicción realizada por nuestra RNA.

programar inteligencia artificial paso 4

¿Cómo probar la RNA creada con python al programar IA?

Al programar inteligencia artificial es necesario que, luego del proceso, la RNA sea testeada. Por ello, en este repositorio que he creado se encuentran los archivos para probar la red neuronal en la que hemos trabajado.

Allí puedes observar que hay dos redes neuronales distintas, debido a que quiero mostrar la importancia de seleccionar unos buenos datos a la hora de entrenar una red neuronal artificial.

Por otro lado, para ver en funcionamiento las RNA, he creado este archivo de muestra en el que inicializamos dos redes neuronales que tendrán de input un array de tres valores [v1, v2, v3] y como resultado queremos obtener una operación XOR entre v1 y v2.

A la primera red la entrenaremos con todos los posibles valores que pueden entrarle y los valores que esperamos, mientras que a la segunda la entrenaremos únicamente con los inputs acabados en 1:

programar inteligencia artificial probar rna

Después de ejecutar todas las rondas de entrenamiento (en nuestro caso 12000), obtenemos los siguientes resultados:

programar inteligencia artificial rondas entrenamiento

 

Como podemos observar, la red neuronal mal entrenada falla al predecir el resultado de un input acabado en 0, aunque el valor del mismo no importe en la operación que se está realizando. Sin embargo, al predecir el resultado acabado en 1, lo predice con una confianza incluso mayor que la red bien entrenada.

Conoce el caso de éxito del CRM predictivo que hemos desarrollado con inteligencia artificial.

Cuando hablamos de redes neuronales artificiales al programar inteligencia artificial es muy importante tener en cuenta que no solo la complejidad de estas es importante, sino también que los datos elegidos para entrenar a las mismas deben ser adecuados para obtener los resultados esperados.

cta post cognitive computing

Posts relacionados
¡Comparte con tus contactos!
   

Comenta este artículo...

New call-to-action

Suscríbete y no te pierdas ninguna novedad

¡Comparte con tus contactos!

   
contacto