Programar inteligencia artificial: con python en 4 pasos es posible

programar-inteligencia-artificial-4-pasos-python

¿Has oído hablar de herramientas como los asistentes virtuales, chatbots para marketing, aplicaciones de analítica predictiva o algunas otras? Hoy en día, estas herramientas 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 ahí la necesidad de aprender a programar inteligencia artificial para crear soluciones cada vez más potentes.

En este artículo, nos centraremos en comprender qué son las Redes Neuronales Artificiales (RNA) y por qué son fundamentales a la hora de programar inteligencia artificial. Te ofrecemos una guía con el paso a paso para la programación de inteligencia artificial con python para crear RNA.

 

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) conectados entre sí, de modo que forman una estructura de capas de profundidad, también llamadas “capas de aprendizaje”. Dichas capas son las que permiten que la inteligencia artificial pueda ‘aprender’.

Así, 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.

Un ejemplo de lo que se puede lograr al aplicar esta tecnología es 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, 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

Después 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. Conoce 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?

Así, podemos decir que los requisitos para comenzar a programar inteligencia artificial son dos: 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’:

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, tras el proceso, la RNA sea testeada. Por ello, en este repositorio 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.

Descubre lo último sobre Inteligencia Artificial  descargándote el Ebook aquí

Más artículos

Migración a BTP Cloud Foundry: por qué y cómo

Cloud Foundry es la apuesta de SAP para los nuevos clientes de BTP. Por eso, es cuestión de tiempo que Neo desaparezca como plataforma. De este modo, los clientes que utilizan el entorno Neo no...

Leer másArrow 41

Combina IA con RPA para maximizar el impacto en el negocio

El pasado 9 de noviembre se celebró Tech Barcelona en el que Enzyme e IBM expusieron a los asistentes los entresijos de la era de la hiperautomatización. Si tú también quieres saber hacia dónde se...

Leer másArrow 41

Watson Assistant y Watson Discovery: el chatbot ganador de IBM

Cómo sacarle partido a tus datos con un asistente personalizado de IBM

Los asistentes virtuales son uno de los sistemas de comunicación que más está creciendo en los últimos años. No en vano, ofrecen

Leer másArrow 41

Monitorización: conoce el estado de tus sistemas y aplicaciones en tiempo real

¿Cómo puede Instana contribuir a la optimización del monitoreo 24/7? En anteriores artículos, hemos hablado sobre la importancia de saber que ocurre en nuestros entornos. En este sentido, la...

Leer másArrow 41

Automatiza procesos inteligentes con low-code

La automatización de procesos inteligentes aporta una innumerable cantidad de beneficios y ventajas a las compañías que la implementan, como puede ser la agilización de procesos, reducción del error...

Leer másArrow 41