Cómo crear una inteligencia artificial con python en 4 pasos

programar-inteligencia-artificial-4-pasos-python

La humanidad lleva cientos de años intentando descubrir cómo crear una inteligencia artificial. ¿Has oído hablar de herramientas como los asistentes virtuales, chatbots para marketing, aplicaciones de analítica predictiva o algunas otras? ¡Todo es IA!

 Hoy en día, estas herramientas se han popularizado tanto que, 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 entender como crear una 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 crear una 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

 

Cómo crear una inteligencia artificial: conclusiones

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.

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 noticias

¿Cómo se ejecuta un proyecto de automatización de procesos con RPA?

La automatización de procesos con RPA es una de las tendencias en la transformación digital. La posibilidad de automatizar tareas, para que las personas puedan dedicar su tiempo y esfuerzo a tareas...

Leer másArrow 41

Explainability AI: cómo hacer nuestro modelo legible

A la hora de tomar decisiones, la inteligencia artificial se ha convertido en una herramienta muy útil en el día a día. Lo curioso es que esto es así tanto en el ámbito personal como en el laboral....

Leer másArrow 41

Inversión en tecnología: clave para hacer frente a la crisis económica

La crisis económica es una realidad palpable en la actualidad. La inflación de los precios, la poca disponibilidad de los combustibles, así como la lenta recuperación de la Covid-19, han hecho que...

Leer másArrow 41

Supply chain: tendencias y retos tecnológicos

En el mundo empresarial contemporáneo, la gestión efectiva de la cadena de suministro es fundamental para el éxito y la competitividad de las organizaciones. La cadena de suministro, o supply chain...

Leer másArrow 41

Cómo diseñar una estrategia de IA para incrementar el éxito de los proyectos de Machine Learning

En el Webinar “AI Strategy: Cómo diseñar una estrategia de IA para incrementar el éxito de los proyectos”, hemos compartido una visión acerca de aquellos problemas generales que hacen que proyectos...

Leer másArrow 41