ANN para la ciencia de datos | Conceptos básicos de la red neuronal artificial

Contenidos

Este post fue difundido como parte del Blogatón de ciencia de datos

En este post, te explicaré los conceptos básicos de las redes neuronales y su código. En la actualidad, muchos estudiantes simplemente aprenden a codificar redes neuronales sin comprender los conceptos básicos detrás de esto y cómo funciona internamente. Primero, ¿qué son las redes neuronales?

¿Qué es la red neuronal?

Neural Network es una serie de algoritmos que intentan imitar el cerebro humano y hallar la vinculación entre los conjuntos de datos. Se está usando en varios casos de uso como regresión, clasificación, acreditación de imágenes y muchos más.

Como hemos dicho previamente, las redes neuronales intentan imitar el cerebro humano, entonces podría haber diferencias y semejanzas entre ellas. Hablemos brevemente de ello.

Algunas diferencias importantes entre ellos son que la red neuronal biológica realiza un procesamiento paralelo, mientras que la red neuronal artificial realiza un procesamiento en serie, además en el primero, el procesamiento es más lento (en milisegundos), mientras que en el último el procesamiento es más rápido (en un nanosegundo).

Arquitectura de ANN

Una red neuronal tiene muchas capas y cada capa realiza una función específica, y a medida que aumenta la complejidad del modelo, el número de capas además aumenta, es por ello que se lo conoce como perceptrón multicapa.

La forma más pura de una red neuronal tiene tres capas: la capa de entrada, la capa oculta y la capa de salida. La capa de entrada recoge las señales de entrada y las transfiere a la próxima capa y, por último, la capa de salida da el pronóstico final y estas redes neuronales deben entrenarse con algunos datos de entrenamiento, así como con algoritmos de aprendizaje automático antes de proporcionar un obstáculo en particular. Ahora, entendamos más sobre el perceptrón.

Sobre Perceptron

Como se discutió previamente, el perceptrón de múltiples capas son simplemente las capas ocultas o densas. Están formados por muchas neuronas y las neuronas son la unidad principal que trabaja en conjunto para formar el perceptrón. En palabras simples, como puede ver en la imagen de arriba, cada círculo representa neuronas y una combinación vertical de neuronas representa perceptrones que es simplemente una capa densa.

Ahora, en la imagen de arriba, puede ver la vista detallada de cada neurona. Aquí, cada neurona tiene algunos pesos (en la imagen de arriba w1, w2, w3) y sesgos y, en base a estos cálculos, se realizan como, combinación = sesgo + pesos * entrada (F = w1 * x1 + w2 * x2 + w3 * x3) y por último se aplica la función de activación salida = activación (combinación) en la imagen de arriba, la activación es sigmoidea representada por 1 / (1 + e-F). Hay algunas otras funciones de activación, como ReLU, Leaky ReLU, tanh y muchas más.

Trabajo de ANN

Al principio, la información se alimenta a la capa de entrada que posteriormente la transfiere a las capas ocultas, y la interconexión entre estas dos capas asigna pesos a cada entrada de forma aleatoria en el punto inicial. y posteriormente se agrega el sesgo a cada neurona de entrada y después de esto, la suma ponderada que es una combinación de pesos y sesgo se pasa por medio de la función de activación. La función de activación tiene la responsabilidad de qué nodo disparar para la extracción de características y por último se calcula la salida. Todo este procedimiento se conoce como Propagación hacia adelante. Después de obtener el modelo de salida para compararlo con la salida original y se conoce el error y por último, los pesos se actualizan en propagación hacia atrás para reducir el error y este procedimiento continúa durante un cierto número de épocas (iteración). En resumen, los pesos del modelo se actualizan y se realiza el pronóstico.

Ventajas

  1. ANN tiene la capacidad de aprender y modelar relaciones complejas y no lineales, dado que muchas relaciones entre entrada y salida no son lineales.
  2. Después del entrenamiento, ANN puede inferir relaciones invisibles a partir de datos invisibles y, por eso, se generaliza.
  3. A diferencia de muchos modelos de aprendizaje automático, ANN no tiene restricciones en los conjuntos de datos, dado que los datos deben tener una distribución gaussiana o no otra distribución.

Aplicaciones

Hay muchas aplicaciones de ANN. Algunos de ellos son :

  1. Preprocesamiento de imágenes y acreditación de caracteres.
  2. Pronóstico.
  3. Calificación crediticia.
  4. Detección de fraudes.
  5. Administración de la cartera.

PARTE DE CODIFICACIÓN

Ahora codifiquemos y entendamos los conceptos que lo usan.

1. Comprensión y carga de los conjuntos de datos

Primero importe bibliotecas como NumPy, pandas y además importe clases denominadas secuenciales y densas de la biblioteca de Keras.

import numpy as np
import pandas as pd
from keras.models import Sequential
from keras.layers import Dense

Ahora, aquí voy a utilizar el conjunto de datos de inicio de diabetes de los indios Pima, que es un conjunto de datos de aprendizaje automático estándar del repositorio de aprendizaje automático de UCI y el link se puede hallar a continuación. Este conjunto de datos informa sobre el historial médico del paciente y si tuvo un inicio de diabetes dentro de los cinco años, además es un obstáculo de clasificación binaria.

Puede descargar los conjuntos de datos desde aquí:

Conjuntos de datos

Ahora importe el conjunto de datos usando pandas y posteriormente comprendamos más sobre los conjuntos de datos y posteriormente divida los conjuntos de datos en variables dependientes e independientes.

dataset = pd.read_csv('pima-indians-diabetes.csv')
X = dataset[:,0:8]
y = dataset[:,8]

2. Definición del modelo de Keras

Los modelos en Keras se definen como una secuencia de capas en las que cada capa se agrega una tras otra. La entrada debe contener características de entrada y se especifica al crear la primera capa con input_dims argumento. Aquí input_dims será 8.

Ahora surge la pregunta de cómo podemos elegir el número de capas y el número de neuronas en cada capa.

Es bastante difícil saber cuántas capas debemos utilizar. De forma general para esto Sintonizador Keras se utiliza, que cuenta con una gama de capas, una gama de neuronas y algunas funciones de activación. y posteriormente, a través de permutación y combinación, intenta hallar cuál es la más adecuada. Pero una desventaja de esto es que lleva mucho tiempo. Puedes consultar la documentación del mismo. Sintonizador de Keras para más detalles.

En este ejemplo, se utiliza una red totalmente conectada con tres capas que es definido usando la clase densa. El primer argumento toma el número de neuronas en esa capa y, y la activación El argumento toma la función de activación como entrada. Aquí, ReLU se utiliza como una función de activación en las dos primeras capas y sigmoide en la última capa, dado que es un obstáculo de clasificación binaria.

model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

3. Compilar el modelo de Keras

Durante la compilación, debemos especificar la función de pérdida para calcular los errores, el optimizador para actualizar los pesos y las métricas.

En esta circunstancia, usaremos «binary_crossentropy« como el pérdida argumento dado que es un obstáculo de clasificación binaria.

Aquí tomaremos optimizador como «Adán“Dado que se sintoniza automáticamente y da buenos resultados en una amplia gama de problemas y por último recopilaremos e informaremos la precisión de la clasificación por medio de métrica argumento.

model.compile(loss="binary_crossentropy", optimizer="adam", metrics=['accuracy'])

4. Ajuste del modelo Keras.

Ahora ajustaremos nuestro modelo a los datos cargados llamando al encajar() función en el modelo.

El procedimiento de entrenamiento se ejecutará durante un número fijo de iteraciones a través del conjunto de datos que se especifica a través de el épocas argumento. El número de filas del conjunto de datos debe actualizarse y se actualiza dentro de cada época, y establecerse usando el tamaño del lote argumento.

Aquí, ejecutaremos 150 épocas y un tamaño de lote de 10.

model.fit(X, y, epochs=150, batch_size=10)

5. Examinar el modelo de Keras

La evaluación del modelo en el conjunto de datos se puede realizar usando el examinar() función. Se necesitan dos argumentos, dicho de otra forma, entrada y salida. Generará una predicción para cada par de entrada y salida y recopilará puntajes, incluida la pérdida promedio y cualquier métrica, como la precisión.

los examinar() La función devolverá una lista con dos valores, el primero es la pérdida del modelo y el segundo será la precisión del modelo en el conjunto de datos. Solo nos interesa informar la precisión y, por eso, ignoramos el valor de la pérdida.

_, accuracy = model.evaluate(X, y)
print('Accuracy: %.2f' % (accuracy*100))

6.Haga predicciones

El pronóstico se puede hacer llamando al predecir() función en el modelo. Aquí la función de activación sigmoidea se utiliza en la capa de salida, por lo que las predicciones serán una probabilidad en el rango entre 0 y 1.

predictions = model.predict(X)
rounded = [round(x[0]) for x in predictions]

Resumen de código final

Aquí hemos aprendido cómo crear su primer modelo de red neuronal usando la poderosa biblioteca Keras Python para el aprendizaje profundo.

Hay seis pasos principales en el uso de Keras para crear una red neuronal o un modelo de aprendizaje profundo que cargan los datos, definen la red neuronal en Keras, posteriormente compilan, evalúan y por último hacen las predicciones con el modelo.

CONCLUSIÓN

En este post hemos entendido los conceptos básicos de las redes neuronales artificiales y su código. En la parte de codificación, hemos utilizado el conjunto de datos sobre el inicio de la diabetes de los indios Pima. aquí hemos entendido en detalle los seis pasos principales para crear redes neuronales. Aparte de esto, muchas cosas no se han cubierto en los blogs y, a continuación, he proporcionado los links de otros blogs desde los que puede consultar los temas.

  1. Diferentes tipos de funciones de costes y sus aplicaciones.
  2. Acerca de Gradient Descent.
  3. Documentación de Keras

Los medios que se muestran en este post no son propiedad de DataPeaker y se usan a discreción del autor.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.