Cómo hacer una red neuronal: arquitectura, parámetros y código

Publicado: 2021-02-12

Las redes neuronales, como su nombre lo indica, son circuitos de neuronas. Existen diferentes tipos de Redes Neuronales. Las redes neuronales biológicas están hechas de neuronas biológicas reales. Mientras que las Redes Neuronales Artificiales (ANN) es un sistema que se basa en la Red Neuronal biológica, como la presente en el cerebro. El número estimado de neuronas en el cerebro es de alrededor de 100 billones, que se comunican a través de señales electroquímicas.

La ANN intenta recrear la complejidad computacional presente en las neuronas biológicas, pero no es comparable a eso y son versiones mucho más simples y no complejas de las redes neuronales biológicas. En este artículo, comprenderemos la estructura de una ANN y aprenderemos a crear una red neuronal usando Python.

Tabla de contenido

Arquitectura de red neuronal

La red neuronal artificial está formada por neuronas artificiales que también se denominan “Nodos”. Estos nodos están conectados entre sí de manera que se crea una red o malla. A la fuerza de estas conexiones entre sí se le asigna un valor. Este valor se encuentra entre -1 a 1.

Si el valor de la conexión es alto, indica una fuerte conexión entre esos nodos. Cada nodo tiene una función característica. Cambiar esta función cambiará el comportamiento y la complejidad de la red neuronal. Hay tres tipos de neuronas en una ANN, nodos de entrada, nodos ocultos y nodos de salida, como se muestra a continuación:

Fuente

El nodo de entrada es el encargado de recibir la información que generalmente se presenta en forma de valores numéricos o expresiones. La información se presenta como valores de activación, donde a cada nodo se le asigna un número, cuanto mayor sea el número, mayor será la activación.
La información se transmite más abajo en la red. En función de los pesos de conexión del Nodo y la función de activación correspondiente a ciertas neuronas de capas específicas, la información se transmite de neurona a neurona. Cada uno de los nodos suma los valores de activación al recibirlos, los valores se modifican en función de la función de transferencia.
La información fluye por toda la red, a través de capas ocultas, hasta llegar a los nodos de salida. Los nodos de salida son muy importantes ya que reflejan la entrada de manera significativa para el mundo exterior. Aquí se puede ver un aspecto asombroso de las redes neuronales que conduce al ajuste de pesos para cada capa y nodos.

La diferencia entre el valor predicho y el valor real (error) se propagará hacia atrás. Por lo tanto, la red neuronal aprenderá de los errores cometidos e intentará ajustar los pesos sobre la base del enfoque de tasa de aprendizaje designado.

Por lo tanto, ajustando los parámetros como una cantidad de capas ocultas, una cantidad de neuronas por capa, una estrategia de actualización de peso y una función de activación, podemos crear una red neuronal.

Definir los parámetros

Función de activación

Hay varias funciones de activación para elegir que se pueden usar en la red neuronal en función del problema en cuestión.

Las funciones de activación son ecuaciones matemáticas que tiene toda neurona. Determina la salida de una red neuronal.
Esta función de activación se adjunta a cada neurona de la red y determina si debe activarse o no, lo que se basa en si la activación de esa neurona en particular ayuda a derivar predicciones relevantes en la capa de salida. Diferentes capas pueden tener diferentes funciones de activación adjuntas. Las funciones de activación también ayudan a normalizar la salida de cada neurona a un rango entre 1 y 0 o entre -1 y 1.

Las redes neuronales modernas utilizan una técnica importante llamada retropropagación para entrenar el modelo ajustando los pesos, lo que aumenta la tensión computacional en la función de activación y su función derivada.

Funcionamiento de una función de activación
Enlace perdido

Hay 3 tipos de funciones de Activación:
Binario- x<0 y=0, x>0 y=1
Lineal- x=y
No lineal: varios tipos: Sigmoid, TanH, Logistic, ReLU, Softmax, etc.

Fuente: Blog

Tipo: ReLU
Enlace perdido

Algoritmo

Hay muchos tipos de redes neuronales, pero a menudo se dividen en redes de alimentación hacia adelante y de retroalimentación (propagación hacia atrás).

1) La red de alimentación directa es una red no repetitiva que contiene entradas, salidas y capas ocultas; ya que las señales solo pueden moverse en una dirección. Los datos de entrada se transfieren a la capa del equipo de procesamiento donde realiza los cálculos. Cada factor de procesamiento hace su cálculo en base al peso de la entrada. Se calculan nuevos valores y luego los nuevos valores de entrada alimentan la siguiente capa.

Este proceso continúa hasta que atraviesa todas las capas y determina el resultado. A veces se usa una función de transferencia de límite para medir la salida de neuronas en la capa de salida. Las redes Feed Forward se conocen como e incluyen redes Perceptron (directas e indirectas). Las redes feed-forward se utilizan a menudo para la minería de datos.

2) La red de retroalimentación (por ejemplo, una red neuronal recurrente o RNN) tiene mecanismos retrospectivos, lo que significa que pueden tener señales que se mueven en ambas direcciones usando trampas/bucles. Se permite toda la comunicación posible entre neuronas.

Dado que los bucles están presentes en este tipo de red, se convierte en un sistema no lineal que cambia constantemente hasta alcanzar un estado de estabilidad. Las redes de retroalimentación a menudo se usan para memorias asociadas con problemas de rendimiento cuando la red busca un buen conjunto de objetos conectados.

Capacitación

el pase feed-forward significa que se le da una entrada y pondera cómo se calcula la salida. Después de completar el entrenamiento, solo ejecutamos el pase hacia adelante para formar las predicciones.

Pero primero tenemos que entrenar a nuestro modelo para que realmente aprenda los pesos y, por lo tanto, el procedimiento de entrenamiento funciona de la siguiente manera:

  1. Seleccione aleatoriamente e inicialice los pesos para todos los nodos. Hay métodos de inicialización inteligentes que están integrados en TensorFlow y Keras (Python).
  2. Para cada ejemplo de entrenamiento, realice un pase hacia adelante utilizando los pesos presentes y calcule la salida de cada nodo de izquierda a derecha. La salida final es el valor del último nodo.
  3. Compare el resultado final con el objetivo real dentro de los datos de entrenamiento y mida el error empleando una función de pérdida.
  4. Realice un pase hacia atrás de derecha a izquierda y propague el error calculado en el último paso a cada nodo individual mediante la propagación hacia atrás.
  5. Calcule la contribución de peso de cada neurona al error y ajuste los pesos de la conexión en consecuencia mediante el descenso de gradiente. Propaga los gradientes de error desde la última capa.

Código de Python para redes neuronales

Ahora que entendemos cómo se crea teóricamente una red neuronal, implementemos lo mismo usando Python.

Red neuronal en Python
Usaremos la API de Keras con backends de Tensorflow o Theano para crear nuestra red neuronal.

Instalación de bibliotecas
Teano
>>> instalación de pip –actualización –sin dependencias git+git://github.com/Theano/Theano.git

Tensorflow y Keras
>>> pip3 instalar tensorflow
>>> pip install –actualizar Keras

Importar las bibliotecas

importar kera
de keras.models import Secuencial
de keras.layers import Dense

Inicialización de la red neuronal artificial

modelo = Secuencial()

Crea capas de entrada y ocultas-

modelo.add(Dense(input_dim = 2, unidades = 10, activación='relu', kernel_initializer='uniforme'))

Este código agrega la capa de entrada y una capa oculta a la red secuencial
Dense(): nos permite crear una red neuronal densamente conectada
input_dim: forma o número de nodos en la capa de entrada
unidades: el número de neuronas o nodos en la capa actual (capa oculta)
activación: la función de activación aplicada a cada nodo.”relu” significa Unidad Lineal Rectificada
kernel_initializer: pesos aleatorios iniciales de la capa

Segunda capa oculta
model.add(Dense(unidades = 20, activación='relu', kernel_initializer='uniforme'))

El código crea y agrega otra capa oculta al modelo con 20 nodos y la función de activación 'Lineal rectificada'. Se pueden agregar más capas de manera similar según el problema y la complejidad.

Capa de salida
model.add(Dense(unidades = 1, activación='sigmoide', kernel_initializer='uniforme'))

Una sola capa de salida con Sigmoid o softmax son las funciones de activación comúnmente utilizadas para una capa de salida.

compilación ana:
model.compile(optimizador='adam', pérdida='binary_crossentropy', metrics=['accuracy'])

La ANN se compila con una función de optimización y una función de pérdida antes de ser entrenada.

Optimizer: una función de optimizador para la red. Hay varios tipos de optimizadores y se usa principalmente adam.
Loss: se utiliza para calcular las pérdidas y los errores. Hay varios tipos y la elección depende de la naturaleza del problema que se está tratando.
Métricas: la métrica utilizada para medir el rendimiento del modelo.

Ajuste del modelo con los datos de entrenamiento:
model.fit(X_train,Y_train,batch_size=64, epochs=30)

Este código creará el modelo.

Conclusión

Ahora podemos crear una red neuronal artificial (en Python) desde cero, ya que entendimos los diferentes parámetros que se pueden cambiar según el problema en cuestión.

Si está interesado en obtener más información sobre técnicas de aprendizaje profundo , aprendizaje automático, consulte el Diploma PG en aprendizaje automático e IA de IIIT-B y upGrad, que está diseñado para profesionales que trabajan y ofrece más de 450 horas de capacitación rigurosa, más de 30 estudios de casos y asignaciones, estado de exalumno de IIIT-B, más de 5 proyectos prácticos finales prácticos y asistencia laboral con las mejores empresas.

Aprenda el curso ML de las mejores universidades del mundo. Obtenga programas de maestría, PGP ejecutivo o certificado avanzado para acelerar su carrera.

Liderar la revolución tecnológica impulsada por la IA

Solicite el programa de certificado avanzado en aprendizaje automático y PNL