Phyton es uno de los lenguajes de programación más populares que existen; sin embargo, pocos saben que es una herramienta perfecta para crear una red neuronal básica, una estructura que forma parte del sector de la inteligencia artificial y, por tanto, del big data.
La IA (Inteligencia Artificial) tiene su principal aplicación en la solución de problemas utilizando algoritmos matemáticos. Su objetivo es emular el funcionamiento del cerebro humano a través de redes neuronales artificiales creadas con herramientas informáticas. Para aprender a construirlas, nada mejor que cursar el Máster en Big Data y Business Analytics.
¿Qué es una red neuronal?
Una red neuronal artificial representa unidades de entrada y de salida interconectadas capaces de transmitir señales. Este sistema forma la base del aprendizaje profundo, que es un subcampo del aprendizaje automático de la computación, donde se intenta emular la propia estructura del cerebro humano.
De esta manera, las redes neuronales cogen los denominados «datos de entrada» y son capaces de ser entrenadas para llegar a reconocer patrones de esa información, prediciendo la salida y creando un nuevo conjunto de datos similares para resolver problemas complejos.
Pongamos un ejemplo para entenderlo mejor:
Imaginemos estar en una fase de sueño profundo y, de repente, sentimos que todo nuestro entorno comienza a temblar. Inmediatamente después, nuestro cerebro llega a la conclusión de que se trata de un terremoto y se nos vienen a la cabeza cosas valiosas para nosotros que nos gustaría salvar. Por ejemplo: la familia, documentos importantes, joyas, el ordenador….
Pero solo tenemos unos minutos para salir de casa y no podemos llevarnos todo. ¿Cuáles serían nuestras prioridades? Quizás primero salvaríamos a nuestros seres queridos y, si el tiempo lo permite, pensaríamos en salvar el resto. Todo ello no se hace a la ligera, sino que, inconscientemente, asignamos un peso diferente a nuestros objetos de valor. Cada uno de ellos, en ese momento, es un input y las prioridades difieren según ese peso que le hayamos asignado.
Lo mismo ocurre con las redes neuronales creadas con algoritmo. De forma artificial, asignamos pesos a diferentes valores y predecimos cuáles saldrán primero en función de un número. Sin embargo, a priori, en estos casos no conocemos el peso asociado a cada entrada, por lo que creamos artificialmente un algoritmo que los calculará, procesando muchos datos de entrada.
La plataforma de Phyton
A día de hoy, Python es el lenguaje de programación más común utilizado para construir y entrenar redes neuronales, sobre todo, las denominadas convolucionales. Y estos son los principales motivos:
- La sintaxis de Python facilita la expresión de conceptos matemáticos, por lo que incluso aquellas personas que no están familiarizadas con esta herramienta pueden empezar a construir fácilmente modelos matemáticos.
- Python fue diseñado para ser fácil de usar y rápido de aprender y tiene una sintaxis accesible, como hemos dicho en el punto anterior. Además, existen muchos frameworks y bibliotecas de este lenguaje que están disponibles para machine y deep learning.
- Python es muy recomendable para la codificación y la implementación colaborativa porque su código es legible y fácil de transmitir a otros. De hecho, este sistema tiene una gran comunidad que apoya su desarrollo.
Por otra parte, no debemos olvidar que todos los principales frameworks que existen en la web son compatibles con Python. De todos ellos, las plataformas más populares son TensorFlow, Keras (que, normalmente se usan como un contenedor de front-end para TensorFlow) y PyTorch.
Programar una red neuronal con Phyton
¿Alguna vez te has preguntado como chatbots como Siri, Alexa o Cortana son capaces de responder a las consultas de los usuarios? ¿O cómo los coches autónomos pueden conducirse solos, sin ayuda humana? Todos estos sistemas tan evolucionados tienen un denominador común: la inteligencia artificial.
Esta tecnología es la que les permite realizar ciertas actividades sin ser supervisadas o controladas por una persona. En Internet existen muchas bibliotecas sobre este tipo de aprendizaje que se pueden usar para crear una red neuronal utilizando una sola línea de código. Sin embargo, si queremos comprender el funcionamiento en profundidad de la misma, lo mejor es aprender a codificarla desde cero utilizando Python.
Veamos los pasos a seguir para crear una red neuronal simple, con una capa de entrada y de salida:
Definir variables independientes y variable dependiente
En primer lugar, vamos a crear el conjunto de características de entrada, así como la variable dependiente (las etiquetas correspondientes). El conjunto de entrada contiene siete registros, además creamos un conjunto de etiquetas que corresponden con los registros anteriores. Estas etiquetas son los valores que darán más o menos peso a nuestra red neuronal y que otorgarán la prioridad de la que te hablamos al principio del artículo.
Definir hiperparámetros
Usaremos la función Random.seed de numpy para obtener los mismos valores aleatorios siempre que ejecutemos un código concreto. A continuación, le daremos una numeración al peso que vamos a darle a cada valor. Dado que tenemos tres características en la entrada, nos vamos a encontrar, en este caso, un vector con tres diferentes pesos. Por último, establecemos la tasa de aprendizaje en 0.05.
Definir la función de activación y su derivada y entrenar el modelo de red neuronal
Nuestra función de activación es la función sigmoidea que hay que definir. A continuación, definiremos el número de épocas. Una época es la cantidad de veces que queremos entrenar al algoritmo, utilizando nuestros datos. Cuanto más épocas, más costoso será.
El último paso sería hacer predicciones
Estos pasos son para hacer una red neuronal muy simple, con solo una capa de entrada y de salida, desde cero y utilizando Phyton. El resultado de este tipo de estructuras se denomina perceptrón. Un perceptrón puede clasificar datos linealmente.
En definitiva, Phyton también puede crear redes neuronales artificiales, con palabras reales, mucho más complejas, potentes y que añadan múltiples capas ocultas y varios nodos en cada una. Estas redes pueden identificar datos lineales o no lineales, con múltiples aplicaciones en el mercado y en la industria. Para profundizar en esta materia, y también en el lenguaje Phyton, puedes apuntarte a nuestro máster en Big Data y Business Analytics.