Cómo crear tu primera red neuronal sin programar.
Aprende los fundamentos teóricos del entrenamiento de redes neuronales y cómo aplicarlos a través de una red neuronal sencilla.
Un saludo a las 750 personas que van a recibir este post hoy lunes 20 de febrero. Estoy muy contento de que ya seamos tantos, nunca lo imaginé cuando empecé a escribir este pequeño rincón de Internet. Hoy vamos a continuar con la línea del post anterior, que vi que gustó mucho, y vamos a hacer nuestra primera red neuronal.
Esta red neuronal va a ser muy sencilla, y el objetivo es que sea capaz de pasar de grados Fahrenheit a grados Celsius. Hoy no vamos a entrar en temas de programación ya que vamos a entenderlas teóricamente, pero para el próximo ya entraremos de lleno. Tranquilos, todo lo que programemos lo dejaré muy explicado para que lo entendamos todos, pero si quieres saber acerca de Python o redes neuronales puedes preguntarme por Twitter, correo o incluso en los comentarios.
Las redes neuronales, modelo de machine learning que vamos a utilizar hoy, existen desde 1943. Una red neuronal es un modelo computacional inspirado en la estructura y funcionamiento del cerebro humano que permite procesar información y realizar tareas complejas, tales como el reconocimiento de patrones, la clasificación, la predicción, entre otras. Una red neuronal se compone de un conjunto de unidades de procesamiento llamadas neuronas, que se organizan en capas y se interconectan mediante conexiones que transmiten información de una neurona a otra.
Cada neurona en una red neuronal recibe entradas de otras neuronas o del entorno, realiza una transformación no lineal de estas entradas y produce una salida que se transmite a otras neuronas o se utiliza para realizar una tarea específica. Las conexiones entre las neuronas tienen un peso asociado que se ajusta durante el proceso de entrenamiento y que determina la fuerza de la señal que se transmite a través de la conexión.
El entrenamiento de una red neuronal es un proceso iterativo que se realiza utilizando un conjunto de datos de entrenamiento y un algoritmo de optimización. El objetivo del entrenamiento es ajustar los pesos de las conexiones de la red para que esta pueda realizar la tarea deseada de la mejor manera posible.
El proceso de entrenamiento se divide en dos fases principales: propagación hacia adelante (forward propagation) y retropropagación del error (backpropagation).
En la fase de propagación hacia adelante se presentan los datos de entrada a la red y se calcula la salida utilizando los pesos de las conexiones actuales. La salida de la red se compara con la salida deseada y se calcula el error cometido.
En la fase de retropropagación del error se propagan los errores hacia atrás en la red, calculando la contribución de cada neurona al error total y ajustando los pesos de las conexiones en función de esta contribución. El proceso se repite iterativamente hasta que se alcanza un nivel de precisión aceptable.
El algoritmo de optimización que se utiliza en el entrenamiento de una red neuronal es el encargado de ajustar los pesos de las conexiones para minimizar el error. El algoritmo más comúnmente utilizado es el descenso del gradiente estocástico (Stochastic Gradient Descent, SGD), que ajusta los pesos en función del gradiente de la función de pérdida. El gradiente indica la dirección en la que se debe ajustar cada peso para minimizar el error, y el algoritmo de optimización utiliza esta información para actualizar los pesos de las conexiones en cada iteración.
En resumen, una red neuronal es un modelo computacional que se inspira en el cerebro humano y que se utiliza para procesar información y realizar tareas complejas. El entrenamiento de una red neuronal es un proceso iterativo que se divide en dos fases principales: propagación hacia adelante y retropropagación del error, y se realiza utilizando un conjunto de datos de entrenamiento y un algoritmo de optimización, como el descenso del gradiente estocástico.
Pero no os agobiéis, hoy vamos a hacer algo mucho más sencillo: una red neuronal muy básica para que las vayamos entendiendo. Tenemos nuestros datos de entrada, la temperatura en grados Fahrenheit, y queremos calcular una salida, la temperatura en grados Celsius. Lo bueno (y lo raro) es que conocemos cómo se relacionan esas dos variables, por lo que no hará falta entrenarla porque ya sabemos los pesos de cada neurona y su función de activación.
La fórmula para pasar de grados Fahrenheit a Celsius es la siguiente:
Que también se puede expresar de la siguiente forma:
Y que si lo ponemos en forma de red neuronal tendremos lo siguiente:
¡Y ya está! Nuestra primera red neuronal, ¿sencillo verdad? Pues lo que tratamos de hacer con modelos más complejos es ajustar esos parámetros para que sean capaces de predecir adecuadamente la salida a partir de unos datos de entrada. El siguiente día entraremos en la programación de esto y veréis que es mucho más sencillo que lo que os cuentan.
El último post “Desentrañando la Inteligencia Artificial: Comprensión de su funcionamiento y uso en nuestro día a día” le llegó a 741 personas, de las cuales lo abrieron un 39% de las personas, en total el post se abrió 536 veces, recibiendo catorce likes y generando dos nuevos subscriptores. Estoy muy contento con el recibimiento que tuvo el post anterior y estoy viendo que este tema os gusto, por lo que podemos ir desgranándolo poquito a poquito.
Como siempre os digo, si tenéis alguna duda o pensáis que hay algo incorrecto podéis hablarme a través de Twitter o correo electrónico. También me gustaría que si os ha gustado le dierais al botón de like, para saber que temas os gustan más y enfocar las newsletter de una forma u otra.